python - 在 dataframe 中查找列 value 与另一个 dataframe 不同的行

我有两个 dataframes,df1 和 df2。它们具有相同的列名,并且通常具有相同的列 values。我需要隔离列中 value 更改的行,并添加一列来表示之前的 value 是什么。

在下面的示例中,Nancy 的操作数在 df1 和 df2 之间变化。我想用该行创建一个新的 dataframe,即使 Mary 的新行已添加到 df2。

df1:

Name Action Number of Actions
Stacy Action1 32
Nancy Action2 67
Emily Action3 89
Abby Action2 9

df2:

Name Action Number of Actions
Stacy Action1 32
Nancy Action2 75
Emily Action3 89
Abby Action2 9
Mary Action1 43

预期输出(作为 dataframe):

Name Action Number of Actions Previous Value
Nancy Action2 75 67

回答1

你可以试试https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.merge.html

df = (df2.merge(df1, on=['Name', 'Action'], how='left')
      .rename(columns={'Number of Actions_x': 'Number of Actions', 'Number of Actions_y': 'Previous Value'})
      .loc[lambda df: df['Number of Actions'].ne(df['Previous Value'])]
      .dropna()
      )
print(df)

    Name   Action  Number of Actions  Previous Value
1  Nancy  Action2                 75              67

相似文章