使用Pandas DataFrame按说话者合并多行文本失败,求解决方法
解决同一说话者台词合并问题
你之前的代码核心问题是误将单元格内容当作列名重命名,还错误删除了正确的列。这个数据源的CSV列是规范的,包含Play、Act、Scene、Speaker、Line,咱们基于正确的列来操作就能实现需求:
import pandas as pd # 读取莎士比亚剧本数据 url = 'https://raw.githubusercontent.com/dherman/wc-demo/master/data/shakespeare-plays.csv' data = pd.read_csv(url) # 按说话者分组,合并所有台词为单行 merged_data = data.groupby('Speaker')['Line'].apply(' '.join).reset_index() # 可选:查看合并后的前几行结果 print(merged_data.head())
关键步骤说明:
- 直接读取CSV即可,这个数据源没有坏行,不需要
on_bad_lines='skip' groupby('Speaker')按说话者分组,对Line列使用apply(' '.join)把同一说话者的所有台词用空格拼接成单行reset_index()将分组后的索引转为普通列,让结果结构更规整
如果需要按「剧本+说话者」来合并(比如区分不同剧本里同名的说话者),只需调整分组键:
merged_data = data.groupby(['Play', 'Speaker'])['Line'].apply(' '.join).reset_index()
内容的提问来源于stack exchange,提问作者EthanMcQ
相关产品推荐
相关产品推荐

