使用for循环附加pandas系列

时间:2017-07-24 04:54:34

标签: pandas

我有三个系列和列表:

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数据框中追加行...

1 个答案:

答案 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