gpt4 book ai didi

python - 比较 2 个 Pandas Dataframes 并返回所有不同的行

转载 作者:太空宇宙 更新时间:2023-11-04 02:06:32 25 4
gpt4 key购买 nike

我有 2 个具有相同架构和不同数据的数据框。我想比较它们并获取任何列具有不同值的所有行。

“df1”:

id   Store         is_open
1 'Walmart' true
2 'Best Buy' false
3 'Target' true
4 'Home Depot' true

“df2”:

id   Store         is_open
1 'Walmart' false
2 'Best Buy' true
3 'Target' true
4 'Home Depot' false

我能够得到不同之处,但我没有得到所有的列,而只是得到了已更改的列。所以我得到以下输出:

结果_df:

id   is_open  is_open
1 true false
2 false true
4 true false

下面是实现上述输出的代码:

ne_stacked = (from_aoi_df != to_aoi_df).stack() 
changed = ne_stacked[ne_stacked]
changed.index.names = ['id', 'col_changed']

difference_locations = np.where(from_aoi_df != to_aoi_df)
changed_from = from_aoi_df.values[difference_locations]
changed_to = to_aoi_df.values[difference_locations]
df5=pd.DataFrame({'from': changed_from, 'to': changed_to})
df5

但是,除了上述结果外,我还想要所有相同的列,其中还添加了 Store 列,所以我的预期输出是:

expected_result_df:
id Store is_open_df1 is_open_df2
1 Walmart true false
2 Best Buy false true
4 Home Depot true false

我怎样才能做到这一点?

最佳答案

使用 pandas merge 函数

df = pd.merge(df1,df2[['id','is_open']],on='id')

enter image description here

过滤掉is_open列不相等的行

df = df[df["is_open_x"]!=df["is_open_y"]]
df

enter image description here

按照您的期望重命名

df.rename(columns={"is_open_x":"is_open_df1","is_open_y":"is_open_df2"})

enter image description here

关于python - 比较 2 个 Pandas Dataframes 并返回所有不同的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54587821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com