在循环中合并两个数据帧会改变循环中的原始数据帧



假设我有一个数据帧列表

dataframes = [a, b, c, d]

和一个包含合并所需信息的数据框additionalInformation

是否有一种方法可以在循环中join数据帧并覆盖原始数据帧?

for index, df in enumerate(dataframes):
dataframes[index] = pd.merge(df, additionalInformation, how="left", left_on="cat", right_on="cat")

然而,这并没有更新数据帧。当我输入

a.columns

additionalInformation中的列没有合并…当我执行

a = pd.merge(a, additionalInformation, how="left", left_on="cat", right_on="cat")

它的工作原理。我如何在循环中合并数据帧并覆盖原始数据帧?

如果你想修改DataFrame,你必须分配给DataFrame的内容,而不是变量。

如果附加信息中的cat值是唯一的(从而使左合并保持相同的行数),您可以使用:

for index, df in enumerate(dataframes):
merged = pd.merge(df, additionalInformation, how="left", on="cat")
dataframes[index].loc[:, merged.columns] = merged

如果值不是唯一的,这将截断输出

最新更新