如何在Pandas多列上执行str.split与explode操作?
Pandas DataFrame多列拆分并展开的实现方法
你的需求可以通过调整现有代码实现,核心是确保每一行中需要拆分的列拆分后的列表长度一致,这样explode就能正确对应每一组元素。另外注意处理分隔符前后的空格,避免展开后字符串带多余空格。
完整实现代码
import pandas as pd # 基于你的原始DataFrame执行操作 df2 = (df.set_index(['Name', 'Source']) # 按实际分隔符|拆分,同时自动去除元素前后的空格 .apply(lambda x: x.str.split(r'\s*\|\s*').explode()) .reset_index())
关键细节说明
- 分隔符处理:使用正则表达式
r'\s*\|\s*'拆分,可匹配|前后的任意空格,避免拆分后元素带有多余空白字符(比如原数据中类似Data Scientist| Data Analyst的格式,拆分后会得到干净的Data Scientist和Data Analyst)。 - 多列适配:
apply会遍历所有非索引列执行拆分逻辑,只要每一行中Title、City、Country拆分后的列表长度完全一致,explode就会将对应位置的元素展开为同一行,完美匹配你需要的对应关系。 - 索引还原:最后通过
reset_index()将之前设置为索引的Name、Source列重新转为普通列,恢复DataFrame的常规结构。
结果验证
运行上述代码后,输出的DataFrame结构和内容将完全符合你给出的期望格式,每一行的Title、City、Country一一对应,且无多余空格。
内容的提问来源于stack exchange,提问作者PickleRick
相关产品推荐
相关产品推荐

