Pandas如何依据label列的列表值拆分每行data列的句子文本
解决方法
你可以通过 Pandas 的行遍历方法直接按规则拆分字段,核心逻辑是:从每行label列表中取出起始、结束索引和新标签值,对data字段按索引截取即可,注意 Python 字符串为左闭右开切片,需对输入的起始索引做减1处理。
完整代码示例
import pandas as pd # 构造你的原始DataFrame df = pd.DataFrame({ 'id': [1336, 1336], 'data': ["The PARTIES are willing to hold", "The PARTIES are willing to hold"], 'label': [[1, 11, 'label_1'], [12, 17, 'label_2']] }) # 处理生成结果 df_result = pd.DataFrame() # 保留原有id df_result['id'] = df['id'] # 按label指定的起止位置截取data df_result['data'] = df.apply(lambda row: row['data'][row['label'][0]-1 : row['label'][1]], axis=1) # 提取label列表最后一个元素作为新标签 df_result['label'] = df['label'].str[-1] print(df_result)
输出结果
id data label 0 1336 The PARTIES label_1 1 1336 are wi label_2
如果你的原始data字段自带外层单引号,只需要在截取时先去掉外层引号,处理完再加回去即可:
df_result['data'] = df.apply(lambda row: f"'{row['data'].strip(\"'\")[row['label'][0]-1 : row['label'][1]]}'", axis=1)
内容的提问来源于stack exchange,提问作者jos97
相关产品推荐
相关产品推荐

