如何使用pandas拆分配对文本并转换为指定结构DataFrame
Pandas夫妻配对数据拆分方案
你可以直接用pandas内置的字符串处理、行展开方法完成转换,不需要写逐行遍历的自定义函数,处理速度更快。
核心处理步骤
- 先拆分多组配对:
Pair列里不同配对用英文逗号加空格分隔,调用str.split(', ')把每个单元格的多组配对转成列表 - 展开为单行:用
explode('Pair')把列表里的每一组配对拆成独立的行,行上会自动保留对应的Place字段值 - 拆分夫妻姓名:对单个配对的字符串,按空格分隔拆成
Husband、Wife两列 - 整理结构:删掉原始的
Pair列,调整列顺序得到最终结果
完整可运行代码
import pandas as pd # 这里是构造示例原始数据,实际使用时替换成你自己的DataFrame即可 df = pd.DataFrame({ 'Place': ['Boat Semeru', 'Boat Merbabu'], 'Pair': [ 'Andy.Johnson Mary.Smith, Adam.Roger Bella.Huri', 'Sena.Batra Lera.Clara, Tracy.Roger Bella.Salsa, Iman.Veva Umi.Zuba' ] }) # 核心转换逻辑 df = df.assign(Pair=df['Pair'].str.split(', ')).explode('Pair').reset_index(drop=True) df[['Husband', 'Wife']] = df['Pair'].str.split(' ', expand=True) df = df[['Place', 'Husband', 'Wife']]
运行结果
执行代码后输出的DataFrame结构和你预期完全一致:
Place Husband Wife 0 Boat Semeru Andy.Johnson Mary.Smith 1 Boat Semeru Adam.Roger Bella.Huri 2 Boat Merbabu Sena.Batra Lera.Clara 3 Boat Merbabu Tracy.Roger Bella.Salsa 4 Boat Merbabu Iman.Veva Umi.Zuba
适配提示:如果你的原始数据里逗号前后的空格不规整(比如存在多空格、无空格、制表符的情况),可以把配对拆分规则改成正则匹配,将对应代码替换为
df['Pair'].str.split(r',\s*'),就能兼容各类不规范的分隔格式。
内容的提问来源于stack exchange,提问作者Nabih Bawazir
相关产品推荐
相关产品推荐

