我的数据框如下
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
中的所有子列表的长度都相同
答案 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]))