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

2024-09-29 20:25:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个df,我想比较DF1和DF2中值的变化。我知道我需要合并这两个,这样我就可以将Status列排列起来,但是我也希望只输出状态有任何变化的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

Tags: iddf状态statusdf1df2validatingpending
2条回答

示例数据:

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]

相关问题 更多 >

    热门问题