【发布时间】:2016-09-23 13:16:05
【问题描述】:
我有多个数据帧(25 个数据帧),我正在从所有数据帧的三列中寻找反复出现的行值。以下是我的 daframe 示例
df1
chr start end name
1 12334 12334 AAA
1 2342 2342 SAP
2 3456 3456 SOS
3 4537 4537 ABR
df2
chr start end name
1 12334 12334 DSF
1 3421 3421 KSF
2 7689 7689 LUF
df3
chr start end name
1 12334 12334 DSF
1 3421 3421 KSF
2 4537 4537 LUF
3 8976 8976 BAR
4 6789 6789 AIN
最后,我的目标是查看这些 daframe 的前三列,并根据这 3 列值中的匹配行以及作为最后一列的 datafrme 名称提取新的数据框。所以最终的数据框应该是这样的,
chr start end name Sample
1 12334 12334 AAA df1
1 12334 12334 AAA df2
1 12334 12334 AAA df3
我知道下面的 python 脚本行将创建上面的输出,而不用 Sample 作为列。
s1 = pd.merge(df1, df2, how='left', on=['chr', 'start', 'end'])
df_final = pd.merge(s1, df3[['chr', 'start', 'end']], how='left', on=['chr', 'start','end'])
但是我有超过 25 个数据框,我需要根据匹配值来寻找合并。任何强大且更好的解决方案将不胜感激
【问题讨论】:
标签: python pandas numpy dataframe