我有一个Pandas DataFrame列,列表中有多个列表。像这样:
df
col1
0 [[1,2], [2,3]]
1 [[a,b], [4,5], [x,y]]
2 [[6,7]]
我想将列表拆分为多列,因此输出应该类似于:
col1 col2 col3
0 [1,2] [2,3]
1 [a,b] [4,5] [x,y]
2 [6,7]
请帮我解决这个问题。提前致谢
答案 0 :(得分:3)
如果性能很重要,我认为需要DataFrame
构造函数:
df = pd.DataFrame(df['col1'].values.tolist())
print (df)
0 1 2
0 [1, 2] [2, 3] None
1 [a, b] [4, 5] [x, y]
2 [6, 7] None None
如果需要删除NaN
s - 缺少值,请先添加dropna
:
df = pd.DataFrame(df['col1'].dropna().values.tolist())
答案 1 :(得分:1)
您可以使用pd.Series.apply
:
df = pd.DataFrame({'col1': [[[1, 2], [2, 3]],
[['a', 'b'], [4, 5], ['x', 'y']],
[[6, 7]]]})
res = df['col1'].apply(pd.Series)
print(res)
0 1 2
0 [1, 2] [2, 3] NaN
1 [a, b] [4, 5] [x, y]
2 [6, 7] NaN NaN