pandas:如何让pandas.compare()返回另一行的所有列?

46qrfjad  于 2023-04-28  发布在  其他
关注(0)|答案(2)|浏览(116)

对于 Dataframe df_adf_b,如何将差值(即other中的数据与self中的数据不同)作为完整的行(例如,所有列)返回?

first = {
    'Name': ['Bob', 'Mike', 'Alex'],
    'Job': ['Forklift Operator', 'Forklift Operator', 'Master Forklift Operator']
}

second = {
    'Name': ['Bob', 'Mike', 'Allen'],
    'Job': ['Forklift Operator', 'Forklift Operator', 'Master Forklift Operator']

df_a = pd.DataFrame(first)
df_b = pd.DataFrame(second)

df_c = df_a.compare(df_b)
print(df_c)

让我

Name
    self  other
2   Alex  Allen

我希望能够得到的是other中与左边不匹配的整行:

Name                       Job
2  Allen  Master Forklift Operator
nx7onnlm

nx7onnlm1#

您可以用途:

df_b.loc[df_a.compare(df_b).index]

输出:

Name                       Job
2  Allen  Master Forklift Operator
8zzbczxx

8zzbczxx2#

使用pd.merge on right类型的合并(右帧)和indicator功能:

df_c = (pd.merge(df_a, df_b, how='right', indicator=True)
        .pipe(lambda x: x[x['_merge'].eq('right_only')].drop('_merge', axis=1)))
print(df_c)
Name                       Job
2  Allen  Master Forklift Operator

相关问题