【发布时间】:2018-10-17 19:04:34
【问题描述】:
我有两个大的 excel 文件,想提取每个文件中唯一的行。
例如,我有
df1 = pd.DataFrame({'Value': [100,50,20,10],
'C1': ['a','b','c','d'],
'C2': ['g','h','i','j'],})
df2 = pd.DataFrame({'Value': [100,40,20,5],
'C1': ['a','z','c','d'],
'C2': ['g','h','i','m'],})
第一行和第三行在 df1 和 df2 之间共享。 (a,g,100 或 c,i,20) df1 和 df2 之间不共享第二行和第四行,我想提取这些行。 (b,h,50.d,j,10.z,h,40 和 d,m,5)。
如果你能告诉我如何使用 python 做到这一点,我将非常感激。
感谢大家的反馈。 如果我能得到低于输出,那就太好了。
df1only=pd.DataFrame({'Value': [50,10],'C1': ['b','d'],'C2': ['h','j'],})
df2only = pd.DataFrame({'Value': [40,5],'C1': ['z','d'],'C2': ['h','m']})
【问题讨论】:
-
你能提供一个你想要的输出的例子吗?
-
你想要一个数据框还是保留两个?
-
我以前见过这个。一种方法是创建一个掩码:
m = ~df1.isin(df2).all(1),然后按以下方式访问这些值:df1[m]和df2[m],或者将它们全部放在一起pd.concat([df1,df2]).loc[m] -
对于一个数据框使用
pd.merge(df1,df2, on=['Value', 'C1', 'C2'])否则创建@AntonvBR 建议的掩码
标签: python pandas unique extract