如何合并或更新数据框?

How do I merge or update dataframes?

我有一个原始数据框:

导入 pandas 作为 pd

df = pd.read_excel("Weights.xlsx", sheet_name='Old')
df: 
     Name  S_Name  Height  Weight
0    John  Wright     5.3      52
1   Seven  Taylor     6.4      75
2  Ramsay     Sen     7.2      77

我每次都会得到一个包含更新/新信息的新文件。 示例:

df1 = pd.read_excel("Weights.xlsx", sheet_name='New')
df1:
     Name   S_Name  Height  Weight
0    John   Wright     5.1      57
1   Seven   Taylor     6.3      76
2  Ramsay      Sen     7.0      71
3   Radio     Mast     5.3      62
4   Randy  Stenson     6.4      65

You can find the file used here

我想保留 df 的值,同时从 df1 添加新的行给新的 NameS_Name,这样生成的数据帧如下:

df_final
     Name   S_Name  Height  Weight
0    John   Wright     5.3      52
1   Seven   Taylor     6.4      75
2  Ramsay      Sen     7.2      77
3   Radio     Mast     5.3      62
4   Randy   Stenson    6.4      65

我想补充一点,这两个文件的索引每次都不相同。工作流中有一个排序函数,每次都会改变这些值的索引位置。

如果你不能保证索引对齐,你需要同时使用 mergeupdate(或者你的combine_first不想原地修改df1

您可以将 DataFrame 与 merge 对齐,然后 update:

ids = ['Name', 'S_Name']
df1.update(df1[ids].merge(df, how='left'))

print(df1)

输出:

     Name   S_Name  Height  Weight
0    John   Wright     5.3    52.0
1   Seven   Taylor     6.4    75.0
2  Ramsay      Sen     7.2    77.0
3   Radio     Mast     5.3    62.0
4   Randy  Stenson     6.4    65.0

如果您想要一个新的 DataFrame:

ids = ['Name', 'S_Name']
df_final = df.combine_first(df1[ids].merge(df, how='left'))

print(df_final)

注意。在这两种情况下,您都需要确保您有 non-duplicated 合并键