如何用Pandas拆分含多值的单元格并为每个值插入新行?
解决方案
要实现将Multiple列中的列表元素拆分为独立行,同时保留对应ID和Type的需求,可以使用Pandas的explode方法,步骤如下:
完整代码
import pandas as pd # 初始化原DataFrame df = pd.DataFrame([[123,124,125,126], ['FX10', 'FX11', 'FX12', 'FX15'], [['A', 'B', 'C'], ['X', 'Y'], None, [1]], ]).T df.columns = ['ID', 'Type', 'Multiple'] # 执行拆分转换 result_df = df.explode('Multiple', ignore_index=True) # 查看结果 print(result_df)
转换后结果
| ID | Type | Multiple | |
|---|---|---|---|
| 0 | 123 | FX10 | A |
| 1 | 123 | FX10 | B |
| 2 | 123 | FX10 | C |
| 3 | 124 | FX11 | X |
| 4 | 124 | FX11 | Y |
| 5 | 125 | FX12 | NaN |
| 6 | 126 | FX15 | 1 |
补充说明
explode('Multiple')核心作用是将指定列中的列表元素逐一拆分为独立行,自动复制对应行的其他列值ignore_index=True用于重置结果的索引,避免原索引重复- 若使用的Pandas版本低于1.3.0,需先将
None转换为单元素列表,再执行拆分:df['Multiple'] = df['Multiple'].apply(lambda x: x if isinstance(x, list) else [x]) result_df = df.explode('Multiple', ignore_index=True)
内容的提问来源于stack exchange,提问作者Eric Kim
相关产品推荐
相关产品推荐

