我有三个系列和列表:
df1 = pd.Series(['a','b','c','d'])
df2 = pd.Series(['e','f','g','h'])
df3 = pd.Series(['i','j','k','l'])
df1
0 a
1 b
2 c
3 d
df2
0 e
1 f
2 g
3 h
df3
0 i
1 j
3 k
4 l
list = [df1,df2,df3]
我想使用这样的循环追加系列:
df1 df2 df3
0 a e i
1 b f j
2 c g k
3 d h l
我怎样才能实现这一目标?
我试过这样但却失败了:
for i in dflist:
tempdata = pd.DataFrame([])
mstdf = tempdata.append(i, ignore_index= True)
print(mstdf)
0 1 2 3
0 a b c d
0 1 2 3
0 e f g h
0 1 2 3
0 i j k l
我已经引用了pandas.DataFrame.append文档,我也查看了一些堆栈的问题。但我无法解决这个问题。
python - 在pandas.DataFrame中添加一行 - Stack Overflow python - 将列表或系列作为行附加到pandas DataFrame ... python - 如何在for循环中的pandas数据框中追加行...
答案 0 :(得分:1)
我可以使用pd.concat
pd.concat([df1, df2, df3], axis=1, keys=['df1', 'df2', 'df3'])
df1 df2 df3
0 a e i
1 b f j
2 c g k
3 d h l
您还可以将pd.concat
与词典
pd.concat({'df1': df1, 'df2': df2, 'df3': df3}, axis=1)
df1 df2 df3
0 a e i
1 b f j
2 c g k
3 d h l
但是如果你必须使用循环
df_agg = None
for name, df in zip(['df1', 'df2', 'df3'], [df1, df2, df3]):
if df_agg is None:
df_agg = df.to_frame(name)
else:
df_agg[name] = df
df_agg
df1 df2 df3
0 a e i
1 b f j
2 c g k
3 d h l