如何将列表列表添加到现有数据框中作为单独的列

时间:2019-06-18 09:48:42

标签: python python-3.x pandas dataframe

我的数据框如下

df = pd.DataFrame([['aa', 1], ['bb', 2], ['cc', 3]])

    0   1
0   aa  1
1   bb  2
2   cc  3

我如何才能将列表li = [['xx',11], ['yy',22], ['zz',33]]的列表添加到数据帧df,以便将li内的每个列表添加为一行。预期输出如下:

    0   1   2   3
0   aa  1   xx  11
1   bb  2   yy  22
2   cc  3   zz  33

当前,我正在遍历子列表的索引并将其添加到df

for i in range(len(li[0])):
    df[str(df.shape[1])] = [x[i] for x in li]

有没有更简单的方法可以执行此操作而不循环?

  

len(df)始终等于len(li)
  li中的所有子列表的长度都相同

1 个答案:

答案 0 :(得分:2)

DataFrame.join用作:

df = df.join(pd.DataFrame(li, columns=df.columns+2))

print(df)
    0  1   2   3
0  aa  1  xx  11
1  bb  2  yy  22
2  cc  3  zz  33

如果列数动态变化,则:

df = df.join(pd.DataFrame(li, columns=df.columns+df.shape[1]))

如果列数不同,则:

df = df.join(pd.DataFrame(li, columns=np.arange(len(li[0]))+df.shape[1]))