如何在Pandas中按顺序合并DataFrame两列生成交错对话列表列
Pandas 新增结构化对话列实现方案
已知你已完成对话内容的分号拆分,且每行客户、机器人对话轮数完全匹配,可直接通过以下代码实现需求。
方法1:逐行函数映射(可读性高,适合小数据量)
通过apply逐行配对两组对话,添加角色前缀后按顺序拼接为列表:
def build_combined_dialog(row): dialog_list = [] for cust_msg, bot_msg in zip(row['cust_dil'], row['bot_dil']): # 依次添加带前缀的客户发言、机器人回复,strip()用于清除拆分后残留的首尾空格 dialog_list.append(f"Customer: {cust_msg.strip()}") dialog_list.append(f"Bot: {bot_msg.strip()}") return dialog_list df['combined'] = df.apply(build_combined_dialog, axis=1)
方法2:列表推导式实现(性能更高,适合大数据量)
避免apply的遍历开销,直接通过双层列表推导完成处理,运行速度更快:
df['combined'] = [ [single_msg for turn_pair in zip( [f"Customer: {c.strip()}" for c in cust_turns], [f"Bot: {b.strip()}" for b in bot_turns] ) for single_msg in turn_pair] for cust_turns, bot_turns in zip(df['cust_dil'], df['bot_dil']) ]
后续清理(可选)
如果不需要拆分过程中生成的cust_dil、bot_dil临时列,可执行以下代码删除:
df = df.drop(columns=['cust_dil', 'bot_dil'])
内容的提问来源于stack exchange,提问作者Dab Sauce
相关产品推荐
相关产品推荐

