You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中按逗号纵向拆分DataFrame的hobbies列?

用Pandas拆分并展开DataFrame列的解决方案

嘿,这个需求在日常数据处理里太常见了!用Pandas的str.split()和explode()组合就能完美实现,我给你一步步说明怎么操作:

1. 先构造原始的DataFrame

首先我们把你提供的示例数据转换成Pandas DataFrame:

import pandas as pd

df = pd.DataFrame({
    'id': [1, 2, 3],
    'name': ['John', 'Steve', 'Jim'],
    'hobbies': ['TV, computer', 'travel, film', 'swim, jog']
})

2. 拆分+展开核心操作

只需要简单几步就能完成你的需求,甚至可以合并成一行代码:

# 链式写法:先拆分hobbies列为列表,再纵向展开并重置索引
result_df = df.assign(hobbies=df['hobbies'].str.split(', ')).explode('hobbies', ignore_index=True)

如果想拆分步骤看更清楚的话,可以拆成两行:

# 第一步:把hobbies列按逗号+空格拆分成列表格式
df['hobbies'] = df['hobbies'].str.split(', ')
# 第二步:将列表类型的列"炸开"成多行,同时重置索引匹配你的输出格式
result_df = df.explode('hobbies', ignore_index=True)

3. 查看最终结果

运行完上面的代码后,打印result_df就能得到你想要的输出:

id    name  hobbies
0   1    John       TV
1   1    John  computer
2   2   Steve    travel
3   2   Steve     film
4   3     Jim      swim
5   3     Jim       jog

额外小技巧:适配不规范的分隔符

如果你的数据里hobbies的分隔符不太统一(比如有的是TV,computer无空格,有的是TV, computer有空格),可以用正则表达式匹配任意数量的空格,让拆分更鲁棒:

result_df = df.assign(hobbies=df['hobbies'].str.split(',\s*')).explode('hobbies', ignore_index=True)

这样不管逗号后面有没有空格,都能正确拆分啦!

内容的提问来源于stack exchange,提问作者ah bon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 21:52:42