Python 在循环中连接数据帧

Python 在循环中连接数据帧,python,pandas,dataframe,concatenation,Python,Pandas,Dataframe,Concatenation,我正在为一些简单的事情挣扎,这让我发疯 为什么下面这样的连接不能用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)

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

为什么下面这样的连接不能用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获取:


您有两个数据帧。这些变量由两个变量名“df1”和“df2”引用。现在,您可以在别名“table”下的循环中循环这些数据帧。在循环内部,“表”被重新分配给
concat
的结果。由于
concat
未就位,因此不会修改任何原始数据帧

我的建议是维护一个数据帧列表

df_list = [df1, df2]
现在,修改列表:

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

不,我的意思是我想分别将df3添加到df1和df2中。而不是将这三个变量都存储在一起。您将
concat
的结果存储在变量
表中,然后打印
df1
。变量
df1
不会更改。合并的结果存储在
表中
。现在我明白了。我错误地认为,即使使用“table”作为别名,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