【发布时间】:2019-11-03 09:54:56
【问题描述】:
如果另一个数据帧具有相同的行,我想删除一个数据帧中的行。但是,我不想删除所有行,只删除另一个数据框中的行数。参考这个例子:
df1
col1 col2
0 1 10
1 1 10
2 2 11
3 3 12
4 1 10
df2
col1 col2
0 1 10
1 2 11
2 1 10
3 3 12
4 3 12
期望的输出:
df1
col1 col2
1 10
因为df1 有 3 行 1,10,而 df2 有 2 行 1,10,因此您从每行中删除 2,为 df1 留下 1。如果df1 中有 4 行,我希望df1 中有两行 1,10。与下面的df2 相同:
df2
col1 col2
3 12
我的尝试:
我可能正在考虑计算每个数据帧中有多少重复项,并通过减去 dupe_count 创建新的 df1 和 df2,但想知道是否有更有效的方法。
df1g=df1.groupby(df1.columns.tolist(),as_index=False).size().reset_index().rename(columns={0:'dupe_count'})
df2g=df2.groupby(df2.columns.tolist(),as_index=False).size().reset_index().rename(columns={0:'dupe_count'})
【问题讨论】: