首页 > 解决方案 > 在循环中连接数据帧

问题描述

我正在为一些简单的事情而苦苦挣扎,这让我发疯。

为什么像下面这样的连接不会用 df1 + 附加列替换 df1?

df1 = pd.DataFrame({'A':[1, 2, 3], 'B':[4, 5, 6]})
df2 = pd.DataFrame({'A':[1, 2, 3], 'B':[4, 5, 6]})
df3 = pd.DataFrame({'C':[999, 999, 999]})

for table in [df1, df2]:
    table = pd.concat((table, df3), axis=1)
df1

在此处输入图像描述

谢谢!

[编辑] 我需要分别获取 df1 和 df2:

在此处输入图像描述

标签: pythonpandasdataframeconcatenation

解决方案


你有两个数据框。这些变量由两个变量名称“df1”和“df2”引用。现在,您在别名“table”下循环遍历这些数据帧。在循环内部,“table”被重新分配给concat. 由于concat不是就地,原始数据帧都没有被修改。

我的建议是维护一个 DataFrame 列表。

df_list = [df1, df2]

现在,修改列表

for i, df in enumerate(df_list):
    df_list[i] = pd.concat([df, df3], axis=1)

df_list将反映更新,因为它现在将保存新创建的concat输出。

df1, df2 = df_list

print(df1)
   A  B    C
0  1  4  999
1  2  5  999
2  3  6  999

print(df2)
   A  B    C
0  1  4  999
1  2  5  999
2  3  6  999

推荐阅读