如何根据列表移除DataFrame中指定句子编号的相关数据
问题描述
我有如下DataFrame:
dataframe = { 'Sentence #': [1,1,1,2,2,2,3,3], 'Word': ['a','b','c','a','b','c','a','b'], 'POS': ['NNS', 'RB', 'CD','NNS', 'RB', 'CD','NNS', 'RB'], 'Tag': ['B-PRO', 'I-DR', 'O', 'B-PRO', 'I-DR', 'O', 'B-PRO', 'I-DR'] }
希望根据移除列表 remove_list = [1,3],删除DataFrame中所有与这些句子编号相关的sentence-word-pos-tag数据,预期得到如下结果:
'Sentence #': [2,2,2], 'Word': ['a','b','c'], 'POS': ['NNS', 'RB', 'CD'], 'Tag': ['B-PRO', 'I-DR', 'O']
解决方案
先把字典转成pandas DataFrame,再通过布尔索引筛选出不在移除列表中的句子数据即可:
import pandas as pd # 原始数据 dataframe = { 'Sentence #': [1,1,1,2,2,2,3,3], 'Word': ['a','b','c','a','b','c','a','b'], 'POS': ['NNS', 'RB', 'CD','NNS', 'RB', 'CD','NNS', 'RB'], 'Tag': ['B-PRO', 'I-DR', 'O', 'B-PRO', 'I-DR', 'O', 'B-PRO', 'I-DR'] } # 转为DataFrame格式 df = pd.DataFrame(dataframe) # 移除列表 remove_list = [1,3] # 筛选目标数据 filtered_df = df[~df['Sentence #'].isin(remove_list)]
执行后得到的filtered_df就是符合要求的结果,打印输出为:
Sentence # Word POS Tag 3 2 a NNS B-PRO 4 2 b RB I-DR 5 2 c CD O
如果需要转回字典格式,执行以下代码:
filtered_dict = filtered_df.to_dict('list') print(filtered_dict)
输出结果与预期完全一致:
{'Sentence #': [2, 2, 2], 'Word': ['a', 'b', 'c'], 'POS': ['NNS', 'RB', 'CD'], 'Tag': ['B-PRO', 'I-DR', 'O']}
内容的提问来源于stack exchange,提问作者miladjurablu
相关产品推荐
相关产品推荐

