![](/img/trans.png)
[英]add list of lists to pandas dataframe, where each item of the list is a new column
[英]Add a new column for each item in a list inside a cell in a Pandas DataFrame
假设我有这张桌子
import pandas as pd
df_test = pd.DataFrame()
df_test = df_test.assign(A=[[1,2,3], [1,2], [], [1,2,3,4]])
df_test
+────────────+
| list |
+────────────+
| [1,2,3] |
| [1,2] |
| [] |
| [1,2,3,4] |
+────────────+
我想要做的是为行内列表中的每个项目添加一列。
我想要的输出看起来像这样
+────────────+───+───+───+───+
| list | | | | |
+────────────+───+───+───+───+
| [1,2,3] | 1 | 2 | 3 | |
| [1,2] | 1 | 2 | | |
| [] | | | | |
| [1,2,3,4] | 1 | 2 | 3 | 4 |
+────────────+───+───+───+───+
out = df_test[['A']].join(df_test['A'].apply(pd.Series))
out
A 0 1 2 3
0 [1, 2, 3] 1.0 2.0 3.0 NaN
1 [1, 2] 1.0 2.0 NaN NaN
2 [] NaN NaN NaN NaN
3 [1, 2, 3, 4] 1.0 2.0 3.0 4.0
output = df_test[['A']].join(pd.DataFrame(df_test.unstack().tolist()))
A 0 1 2 3
0 [1, 2, 3] 1.0 2.0 3.0 NaN
1 [1, 2] 1.0 2.0 NaN NaN
2 [] NaN NaN NaN NaN
3 [1, 2, 3, 4] 1.0 2.0 3.0 4.0
还有另一种方式,我认为应该更快,因为它使用的values
没有重塑或没有应用然后连接:
out = pd.concat([df_test, pd.DataFrame(df_test['A'].values.tolist())], axis=1)
print(out)
A 0 1 2 3
0 [1, 2, 3] 1.0 2.0 3.0 NaN
1 [1, 2] 1.0 2.0 NaN NaN
2 [] NaN NaN NaN NaN
3 [1, 2, 3, 4] 1.0 2.0 3.0 4.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.