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

请求协助处理对话数据集:按dialogueID合并收发方消息生成新CSV

高效实现思路与代码片段

针对百万级对话数据集的处理,核心是利用pandas的向量化分组聚合+透视操作,完全避免手动迭代DataFrame,这是处理大数据量的最优方案。

核心思路

  1. 分组聚合:先按dialogueID和from(发送者)分组,将同一发送者在同一对话内的所有消息拼接成字符串,这一步是pandas底层优化的高效操作,性能远高于循环迭代。
  2. 透视转列:将分组后的结果透视,把每个对话的不同发送者消息转成sender和receiver列,直接得到目标结构。

代码实现

import pandas as pd

# 读取原始对话数据集
df = pd.read_csv("your_input_file.csv")

# 1. 按对话ID+发送者分组,拼接所有消息(分隔符可按需替换,比如'\n'或'<SEP>')
grouped = df.groupby(['dialogueID', 'from'])['text'].agg(' '.join).reset_index()

# 2. 透视表转换:将每个对话的两个发送者消息转为sender/receiver列
result_df = grouped.pivot(index='dialogueID', columns='from', values='text').reset_index()

# 重命名列(假设每个对话只有两个交互角色,若有多个可按需调整逻辑)
result_df.columns = ['dialogueID', 'sender', 'receiver']

# 处理空值(比如对话中只有一方发消息的情况)
result_df = result_df.fillna('')

# 保存为目标CSV
result_df.to_csv("output_dialogues.csv", index=False)

关键说明

  • 性能优化:所有操作均为pandas内置的向量化运算,底层基于C实现,处理百万行数据仅需数秒,远快于手动迭代。
  • 灵活调整:消息拼接的分隔符可根据后续NLP任务需求修改(比如用特殊分隔符区分不同消息);若存在多角色对话(超过两人),可扩展逻辑将其他角色消息合并或单独列示。
  • 空值处理:用空字符串填充缺失值,避免后续数据处理出现NaN异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:35:31