如何为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
对应表格:
| A |
|---|
| [1,2,3] |
| [1,2] |
| [] |
| [1,2,3,4] |
我需要将每行单元格内列表的每个元素拆分为单独的新增列,最终期望输出如下:
| A | ||||
|---|---|---|---|---|
| [1,2,3] | 1 | 2 | 3 | |
| [1,2] | 1 | 2 | ||
| [] | ||||
| [1,2,3,4] | 1 | 2 | 3 | 4 |
解决方法
可以通过将列表列转换为多列DataFrame,再与原表横向拼接来实现:
import pandas as pd df_test = pd.DataFrame() df_test = df_test.assign(A=[[1,2,3], [1,2], [], [1,2,3,4]]) # 将列A中的列表展开为多列 expanded_cols = df_test['A'].apply(pd.Series) # 合并原数据表与展开后的列 final_df = pd.concat([df_test, expanded_cols], axis=1) print(final_df)
执行后即可得到符合需求的结果。如果需要自定义新增列的名称,可以修改展开后的列名:
# 给新增列设置自定义名称 expanded_cols.columns = [f'elem_{i+1}' for i in expanded_cols.columns] final_df = pd.concat([df_test, expanded_cols], axis=1)
这样新增的列会被命名为elem_1、elem_2等,更具可读性。
内容的提问来源于stack exchange,提问作者Led
相关产品推荐
相关产品推荐

