Python pandas如何将逗号分隔字段拆分为多行实现数据归一化
Pandas逗号分隔字段拆分为多行实现方案
第一步拆分逗号分隔值为独立行的核心实现逻辑是:先将逗号拼接的字符串拆分为列表,再通过explode方法将列表元素展开为独立行,可直接衔接你已有的第二步拆分代码。
完整实现代码
1. 模拟原始测试数据
对应你描述的id=1、id=2的原始数据结构:
import pandas as pd df = pd.DataFrame({ 'id': [1, 2], 'field': ['A-a,B-b', 'C-c'] })
2. 第一步:拆分逗号分隔值为独立行
# 先按逗号拆分field为列表,再展开为多行,自动重置索引 df = df.assign(field = df['field'].str.split(',')) \ .explode('field', ignore_index=True)
执行完这步后,数据结构已经符合拆分要求:
- id=1的记录拆分为2行,field值分别为
A-a、B-b - id=2的记录保留1行,field值为
C-c
3. 第二步:按横杠拆分字段(你已掌握的代码)
直接复用你写好的逻辑即可:
df[['field_1', 'field_2']] = df['field'].str.split('-', expand=True)
注意事项
- 如果原始数据中
field列存在空值,可在split前补充空值填充避免报错:df['field'].fillna('').str.split(',') - 如果你使用的pandas版本低于1.1.0,
explode方法不支持ignore_index参数,执行完拆分后手动执行df = df.reset_index(drop=True)即可重置索引 - 如果数据中存在除
id、field外的其他列,该方法会自动将其他列的值同步复制到拆分后的新行,无需额外适配
内容的提问来源于stack exchange,提问作者Nicola Bertellini
相关产品推荐
相关产品推荐

