我想构建一个python脚本,它将比较两个pandas Dataframe ,并创建一个新的df
,我可以使用它来更新我的SQL表。我通过阅读现有表来创建df1
。我通过API调用读取新数据来创建df2
。我想隔离更改的行并使用新值更新SQL表。
我试图通过外部合并进行比较,但我需要帮助返回 Dataframe ,其中只有任何字段中具有不同值的记录。
下面是我的示例df1
:
下面是我的示例df2
:
我想要的输出:
此函数返回整个dataframe,但未按预期工作:
def compare_dataframes(df1, df2, pk_col):
# Merge the two dataframes on the primary key column
df_merged = pd.merge(df1, df2, on=pk_col, how='outer', suffixes=('_old', '_new'))
# Identify the rows that are different between the two dataframes
df_diff = df_merged[df_merged.isna().any(axis=1)]
# Drop the columns from the old dataframe and rename the columns from the new dataframe
df_diff = df_diff.drop(columns=[col for col in df_diff.columns if col.endswith('_old')])
df_diff = df_diff.rename(columns={col: col.replace('_new', '') for col in df_diff.columns})
return df_diff
1条答案
按热度按时间llmtgqce1#
一种方法可以是连接2个 Dataframe ,然后删除重复项,如下所示:
如对类似问题的答复所述:https://stackoverflow.com/a/42649293/21442120
根据需要提供输出: