gpt4 book ai didi

python - 比较 Pandas Dataframe 的匹配行和列的差异

转载 作者:行者123 更新时间:2023-12-04 10:40:47 24 4
gpt4 key购买 nike

我想知道哪种是比较两个数据帧的每个单元格的最佳方法,仅适用于与第一个数据帧行和列匹配的单元格,例如:

df1 =

enter image description here

df2 =

enter image description here

我想要的输出是在两个数据帧之间获取具有相同项目名称的 df2 行和 df2 中存在的 df1 列的每个单元格更改,在这种情况下:

enter image description here

欢迎任何关于如何为更大的数据框而不是两个循环执行此操作的想法。

最佳答案

您可以使用 pd.melt做你想做的事。

就像在这个例子中:

import pandas as pd

df_before = pd.DataFrame({'item':['A','B','C', 'D'], 'value':[1,2,3,4]})
df_after = pd.DataFrame({'item':['A','B','C', 'D'], 'value':[1,1,3,5]})

melt_before = df_before.melt(id_vars=['item'], value_vars=['value'], var_name='column')
melt_after = df_after.melt(id_vars=['item'], value_vars=['value'], var_name='column')

diff = melt_before.merge(melt_after, on=['item', 'column'], suffixes=('_old', '_new'))

print(diff[diff['value_old'] != diff['value_new']])

它打印以下 Dataframe :
|--|----|------|---------|---------|
| |item|column|value_old|value_new|
|--|----|------|---------|---------|
|1 | B |value |2 |1 |
|3 | D |value |4 |5 |
|--|----|------|---------|---------|

关于python - 比较 Pandas Dataframe 的匹配行和列的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59939675/

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