如何用Python Pandas将含列表的单列转换为长格式?
解决方案
你可以通过复制原列表列后使用explode()方法实现需求,具体步骤如下:
1. 构造示例DataFrame
import pandas as pd data = { 'uniqId': ['1234', '2534', '3469'], 'DeptId': ['BKNG', 'FINA', 'ASKG'], 'Date': ['2023-09-05', '2023-09-04', '2023-09-05'], 'values': [['VGM', 'FJK'], ['GTD', 'WEH'], ['MUG', 'PIS']] } df = pd.DataFrame(data)
2. 执行拆分操作
先复制values列到新列values_1,再对values_1列执行拆分:
# 复制原列表列到新列 df['values_1'] = df['values'] # 拆分values_1列的列表元素为单独行,保留其他列内容 result_df = df.explode('values_1')
3. 调整列顺序(可选)
如果需要把values_1放在第一列,可调整列顺序:
result_df = result_df[['values_1', 'uniqId', 'DeptId', 'Date', 'values']]
最终输出结果
执行后得到的result_df即为你需要的格式:
| values_1 | uniqId | DeptId | Date | values |
|---|---|---|---|---|
| VGM | 1234 | BKNG | 2023-09-05 | [VGM, FJK] |
| FJK | 1234 | BKNG | 2023-09-05 | [VGM, FJK] |
| GTD | 2534 | FINA | 2023-09-04 | [GTD, WEH] |
| WEH | 2534 | FINA | 2023-09-04 | [GTD, WEH] |
| MUG | 3469 | ASKG | 2023-09-05 | [MUG, PIS] |
| PIS | 3469 | ASKG | 2023-09-05 | [MUG, PIS] |
内容的提问来源于stack exchange,提问作者Tarak Pandya
相关产品推荐
相关产品推荐

