如何跟踪两个数据帧中单个列的任何更改 - 熊猫



我有两个DF,我想比较DF1和DF2中值的变化。我知道我需要合并两者,以便将状态列对齐,但我也只想输出状态发生任何更改的 ID。

DF1:

ID    Status 
1234  Cleared
5678  Validating
4321  Pending
8765  Cleared
9876  Blocked
6789  Blocked

DF2:

ID    Status 
1234  Blocked
5678  Validating
4321  Pending
8765  Cleared
9876  Validating
6789  Blocked

输出:

ID    Status1   Status2
1234  Cleared   Blocked
9876  Blocked   Validating

示例数据:

df1 = pd.DataFrame(['Cleared', 'Validating', 'Pending', 'Cleared', 'Blocked', 'Blocked'], index = [1234, 5678, 4321, 8765, 9876, 6789], columns=['Status'])
df1.index.name = 'ID'
df2 = pd.DataFrame(['Blocked', 'Validating', 'Pending', 'Cleared', 'Validating', 'Blocked'], index = [1234, 5678, 4321, 8765, 9876, 6789], columns = ['Status'])
df2.index.name = 'ID'

联接df1df2为联接的数据帧上的列提供后缀

df = df1.join(df2, lsuffix='_1', rsuffix='_2')

然后使用布尔索引

df[df.Status_1 != df.Status_2]

这可能不是最有效的方法,但至少达到目标。 :)

df3 = df1.copy()
df3['Status_df2'] = df2.Status.copy()
df3 = df3.loc[df3.Status != df3.Status_df2]

相关内容

最新更新