如何将Pandas DataFrame中含多元素字符串的列拆分为多行
解决方法
你可以用 Pandas 的 str.split() 配合 explode() 方法快速实现需求,步骤如下:
- 拆分流派列为列表:先将「流派」列中逗号分隔的内容拆分成列表,同时处理掉流派名称前后的多余空格(比如数据里的
,Hard Rock这种情况) - 将列表拆分为多行:用
explode()方法把每个列表元素拆成单独的行,同时保留其他列的对应信息
代码示例
import pandas as pd # 模拟你的原始DataFrame(实际使用你导入的DataFrame即可) df = pd.DataFrame({ '歌曲名称': ['Song1', 'Song2', 'Song3'], '流派': ['HipHop, Rap', 'Rock, Metal,Hard Rock', 'Jazz'], '时长': ['3:30', '2:55', '4:00'] }) # 处理流派列:拆分并去除空格,然后拆分为多行 df_processed = df.assign(流派=df['流派'].str.split(',\s*')).explode('流派') # 查看结果 print(df_processed)
运行结果
| 歌曲名称 | 流派 | 时长 |
|---|---|---|
| Song1 | HipHop | 3:30 |
| Song1 | Rap | 3:30 |
| Song2 | Rock | 2:55 |
| Song2 | Metal | 2:55 |
| Song2 | Hard Rock | 2:55 |
| Song3 | Jazz | 4:00 |
关键说明
str.split(',\s*'):用正则表达式匹配逗号和任意数量的空白字符,确保不管流派之间是,还是,Hard Rock这种格式,都能正确拆分出无空格的流派名称explode('流派'):将「流派」列的每个列表元素拆成单独一行,自动复制对应行的其他列数据
内容的提问来源于stack exchange,提问作者AndreasWacker
相关产品推荐
相关产品推荐

