python - 如何选择两个数据框之间的差异及其不同的列

Posted

技术标签:

【中文标题】python - 如何选择两个数据框之间的差异及其不同的列【英文标题】:python - how to select difference between two dataframes and it's different column 【发布时间】:2020-09-07 04:22:32 【问题描述】:

我有两个数据框,df2 是更多列

如果df1中的行在df2中没有,我选择它到df3

df1

    id  colA colB
0   1   4    1
1   2   5    2
2   3   2    4
3   4   4    2
4   5   2    4

df2

    id  colA colB colC
0   1   4    1    0
1   2   5    2    0
2   5   2    4    0

我想从 df1 中选择一些行

df3

    id  colA colB
0   3   2    4
1   4   4    2

【问题讨论】:

好的,那么你的代码在哪里? df3=df1.loc[~df1.id.isin(df2.id),].copy() 你只比较'id'列吗? 【参考方案1】:

使用drop_duplicates:

import pandas as pd

df1 = pd.DataFrame('id': [1,2,3,4,5],
                    'colA':[4,5,2,4,2],
                    'colB':[1,2,4,2,4])

df2 = pd.DataFrame('id': [1,2,5],
                    'colA':[4,5,2],
                    'colB':[1,2,4])

pd.concat([df1,df2]).drop_duplicates(subset='id',keep=False)

输出:

   id    colA   colB
2   3    2     4
3   4    4     2

【讨论】:

【参考方案2】:

假设您在 'id' 列上进行比较(如果不是,请澄清),您可以使用带有布尔索引的 Series.isin

>>> df3 = df1[~df1['id'].isin(df2['id'])]
>>> df3
   id  colA  colB
2   3     2     4
3   4     4     2

【讨论】:

【参考方案3】:
df3 = df1.loc[~df1['id'].isin(list(df2['id']))]

输出:

   id  colA  colB
2   3     2     4
3   4     4     2

【讨论】:

以上是关于python - 如何选择两个数据框之间的差异及其不同的列的主要内容,如果未能解决你的问题,请参考以下文章

如何在Python中找到两个矩阵之间的差异,结果不应该有任何带减号的值

如何计算不同数据框的列之间的数值差异?

如何测量数据框中特征之间的差异?

在Python中的数据框中的每一行的两个子字符串之间选择字符串

查找熊猫中两个日期之间差异的最简单方法

在 Python 中获取数据透视表列之间的差异