如何在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
相关产品推荐
相关产品推荐

