Pandas加载情感分析数据集时如何拼接Feeling为NaN的句子行
情感分析数据集句子拼接解决方案
实现逻辑是将非空的Feeling标签作为完整句子的结束标记,前面所有连续Feeling为NaN的句子片段都和该带标签行归为同一组,拼接后对应原标签即可,具体操作如下:
- 首先正常加载原始数据集
- 生成分组ID:每遇到一行
Feeling非空的记录,分组ID就累加1,保证连续的无标签句子片段和后续首个带标签行归入同一分组 - 分组聚合:每组内的所有句子片段拼接为完整句子,取组内最后一行的
Feeling值作为完整句子的对应标签
完整可运行代码如下:
import pandas as pd # 加载原始数据集 url = 'https://raw.githubusercontent.com/jdvelasq/datalabs/master/datasets/amazon_cells_labelled.tsv' df = pd.read_csv(url, sep='\t', names=["Sentence", "Feeling"]) # 生成分组标识 df['group_id'] = df['Feeling'].notna().cumsum() # 分组聚合得到处理后的数据集 result_df = df.groupby('group_id').agg( # 拼接组内所有句子片段 Sentence = ('Sentence', lambda x: ' '.join(x).strip()), # 取组内的标签值 Feeling = ('Feeling', 'last') ).reset_index(drop=True)
如果需要处理拼接后多余的连续空格,可以将拼接逻辑修改为:
Sentence = ('Sentence', lambda x: ' '.join(x).replace(r'\s+', ' ').strip())
内容的提问来源于stack exchange,提问作者Luis Alejandro Vargas Ramos
相关产品推荐
相关产品推荐

