我有三个 Dataframe :
df1 = pd.DataFrame({'sample': [Sample1, Sample2, Sample3, Sample4],
'value': [0.00, 0.0, 0.1, 0.0]})
df2 = pd.DataFrame({'sample': [Sample1, Sample2, Sample3, Sample4],
'value': [0.00, 0.2, 0.5, 0.0]})
df3 = pd.DataFrame({'sample': [Sample1, Sample2, Sample3, Sample4],
'value': [0.00, 0.3, 0.6, 0.0]})
# Table A
Sample1 0.0
Sample2 0.0
Sample3 0.1
Sample4 0.0
# Table B
Sample1 0.0
Sample2 0.2
Sample3 0.5
Sample4 0.0
# Table C
Sample1 0.0
Sample2 0.3
Sample3 0.6
Sample4 0.0
我想合并所有三个 Dataframe ,使所有大于0.00的值都包含在具有不同名称的新 Dataframe 中。每个样本ID中,0.00的值应仅出现一次:
# Output
Sample1 0.0
Sample2_A 0.0 (not required)
Sample2_B 0.2
Sample2_C 0.3
Sample3_A 0.1
Sample3_B 0.5
Sample3_C 0.6
Sample4 0.0
如何创建这样的合并 Dataframe ?
4条答案
按热度按时间arknldoa1#
您可以定义一个自定义函数,如果
value
大于0,该函数将向列sample
添加连字符:如果在每个 Dataframe 中样本id已经彼此不同,则
drop_duplicates
将足以去除value
为零的重复:否则,您可能需要另一个
concat
来删除重复项:fd3cxomn2#
一个命题使用
pandas.concat
与keys
参数:#输出:
c0vxltue3#
编码:
输出量:
mqkwyuun4#
另一种可能的解决方案,基于
pandas.DataFrame.merge
和pandas.melt
:输出量: