如何使用Python Pandas将DataFrame单行内多分隔值拆分生成新行
Pandas 拆分字符串转多行实现方案
核心实现代码
import pandas as pd # 构造测试数据 list_1=[['AA','MM asasas MM asasdad MM dfsdfd'], ['BB','MM dsfsdf MM fgdfgd MM dfgdfg'], ['CC','MM asfdsf MM kjhgkhjk MM jfghjfg']] labels=['name','description'] df=pd.DataFrame(list_1,columns=labels) # 处理逻辑 df = df.assign(description=df['description'].str.split('MM'))\ .explode('description')\ .assign(description=lambda x: x['description'].str.strip())\ .query("description != ''")\ .reset_index(drop=True) # 输出结果 print(df)
代码逻辑说明
- 用
str.split('MM')将description列的字符串按MM分隔符拆分为列表 - 用
explode方法将列表的每个元素拆分为独立行,对应原行的name字段保持不变 - 用
str.strip()去除拆分后内容首尾的多余空格 - 过滤掉字符串开头为MM时拆分产生的空字符串
- 最后重置行索引得到规整的结果表
输出结果
最终输出的df格式如下:
| 序号 | name | description |
|---|---|---|
| 0 | AA | asasas |
| 1 | AA | asasdad |
| 2 | AA | dfsdfd |
| 3 | BB | dsfsdf |
| 4 | BB | fgdfgd |
| 5 | BB | dfgdfg |
| 6 | CC | asfdsf |
| 7 | CC | kjhgkhjk |
| 8 | CC | jfghjfg |
内容的提问来源于stack exchange,提问作者Galat
相关产品推荐
相关产品推荐

