我有一个 Pandas DataFrame 列,列表中有多个列表。像这样的东西:
df
col1
0 [[1,2], [2,3]]
1 [[a,b], [4,5], [x,y]]
2 [[6,7]]
Run Code Online (Sandbox Code Playgroud)
我想将列表拆分为多列,因此输出应类似于:
col1 col2 col3
0 [1,2] [2,3]
1 [a,b] [4,5] [x,y]
2 [6,7]
Run Code Online (Sandbox Code Playgroud)
请帮我解决一下这个。提前致谢
您可以使用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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
如果需要删除NaNs-缺失值,请先添加dropna:
df = pd.DataFrame(df['col1'].dropna().values.tolist())
Run Code Online (Sandbox Code Playgroud)