假设我有一个数据帧列表
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
如果值不是唯一的,这将截断输出