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

如何拆分pandas DataFrame的comment列为多行并保留原direction字段值

pandas 拆分comment列生成新行实现方案

核心思路

先将comment列的每个整字符串按指定分隔符切割为列表,再将列表的每个元素拆分为独立行,原始行的direction值会自动映射到所有拆分后的新行上。

步骤实现

1. 构造示例测试数据

先构造和需求一致的测试数据集,可直接运行验证:

import pandas as pd

# 示例中分隔符为顿号、,可替换为实际使用的逗号、分号等任意分隔符
raw_df = pd.DataFrame({
    'comment': ['物流快、服务好、价格实惠', '质量差、发错货、售后差', '包装完好、送货上门'],
    'direction': [1, 0, 1]
})

2. 最简实现(pandas 1.3.0及以上版本)

直接用内置的str.split+explode方法即可完成需求:

# 按指定分隔符拆分comment列为列表类型
raw_df['comment'] = raw_df['comment'].str.split('、')
# 拆分列表为独立行,ignore_index=True用于重置新表的行索引
result_df = raw_df.explode('comment', ignore_index=True)

3. 旧版本pandas兼容实现

如果pandas版本低于1.3.0不支持explode,可以用stack方法实现相同效果:

result_df = raw_df.set_index('direction')['comment']\
                  .str.split('、', expand=True)\
                  .stack()\
                  .reset_index(level=0, name='comment')\
                  .reset_index(drop=True)
# 调整列顺序和原始表一致
result_df = result_df[['comment', 'direction']]

输出示例

最终得到的result_df格式如下:

commentdirection
物流快1
服务好1
价格实惠1
质量差0
发错货0
售后差0
包装完好1
送货上门1

注意事项

  • 如果拆分后存在空字符串/空白字符串需要过滤,可以在拆分后加一步清洗:
    raw_df['comment'] = raw_df['comment'].str.split('、').apply(lambda x: [item.strip() for item in x if item.strip()])
    
  • 如果存在多种分隔符(比如同时有顿号和逗号),可以用正则匹配拆分,split的sep参数传入正则规则即可,比如sep=r'[、,]'可以同时匹配顿号和逗号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:48:04