如何将Pandas DataFrame中逗号分隔多值列拆分为对应单独行
你可以直接用 Pandas 内置的 explode 方法实现需求,仅需两步即可完成:
- 将 Race、TGR1 两列的逗号分隔字符串转为列表类型
- 对两列同时执行 explode 操作,拆分后其余列的内容会自动复用,且两列的取值会按原顺序一一对应。
示例代码
import pandas as pd # 此处替换为你自己的数据源读取逻辑,比如pd.read_csv(文件路径) df = pd.DataFrame({ 'Track': ['Addington', 'Mount Gambier'], 'Date': ['24/09/2021', '26/09/2021'], 'Race': ['R1,R2,R3,R4,R5,R6,R7,R8,R9,R0,R1,R2', 'R1,R2,R3,R4,R5,R6,R7,R8,R9,R0'], 'TGR1': ['5,8,2,5,6,1,6,3,1,2,1,2', '8,1,4,8,8,1,2,1,2,2'] }) # 拆分字符串为列表 df['Race'] = df['Race'].str.split(',') df['TGR1'] = df['TGR1'].str.split(',') # 多列同时拆分为多行,ignore_index=True用于重置结果的行索引 df = df.explode(['Race', 'TGR1'], ignore_index=True) # 输出查看结果 print(df)
如果你的 Pandas 版本较低不支持多列同时 explode,可以链式调用单列 explode 实现相同效果:
df = df.explode('Race', ignore_index=True).explode('TGR1', ignore_index=True)
该方法写法简洁、性能优异,且天然兼容两列之外的其他所有字段,不需要额外调整适配逻辑。
内容的提问来源于stack exchange,提问作者chuky pedro
相关产品推荐
相关产品推荐

