我有多个大数据框,根据特定的列,我需要获取它们之间的差异,同时保留其他列的数据。例如,如果我有2个数据框,如下所示。
df1:
num Ref Alt DP NL
0 300 C A 50.0 30.0
1 500 C A 45.0 90.0
2 255 A C 69.0 26.0
3 450 B B 55.0 25.0
df2:
num Ref Alt DP NL
0 300 C A 71.0 88.0
1 500 A A 45.0 54.0
2 255 A A 55.0 55.0
3 450 B B 70.0 15.0
我想根据特定的列['num','Ref','Alt']获得这些数据帧之间的差异,同时保持其余列['DP','NL']的数据形式。在示例中,第2行和第2行的第0行和第3行相同(因为['num','Ref','Alt']相同),因此输出数据帧应如下所示:
df1:
num Ref Alt DP NL
0 500 C A 45.0 90.0
2 255 A C 69.0 26.0
df2:
num Ref Alt DP NL
1 500 A A 45.0 54.0
2 255 A A 55.0 55.0
或在同一数据框中获取它(如果可能)...
我尝试过考虑几种解决方案,一种是将它们连接起来,然后删除重复项,但是由于它们是bif数据帧,因此可能会导致问题,或者循环遍历这些数据帧并使用以下脚本:
temp_df = df_list[0]
for df in df_list[1:]:
df_filtered_for_diff = pd.merge(temp_df, df, on=['num', 'Ref', 'Alt'], how='outer')
temp_df = df_filtered_for_diff
return (temp_df)
但我想知道是否有更好的解决方案?
慕侠2389804
万千封印
相关分类