【发布时间】:2021-12-26 05:09:03
【问题描述】:
我正在尝试使用.remove() 从列表中删除元素(列表存储在熊猫数据框中)。基本思想是,我遍历数据框中的所有行,然后遍历行中的每个元素(=list),并检查该特定元素是保持器还是“goner”
data=dict()
data=pd.read_csv('raw_output_v2.csv', names=['ID','Body'])
data['Body']=data['Body'].apply(eval)
keyword_dict={}
for row in tqdm(data['Body'], desc="building dict"):
for word in row:
if word in keyword_dict:
keyword_dict[word]+=1
else:
keyword_dict[word]=1
new_df=remove_sparse_words_from_df(data, keyword_dict, cutoff=1_000_000)
这里是重要的东西:
def remove_sparse_words_from_df(df, term_freq, cutoff=1):
i=0
for row in tqdm(df['Body'],desc="cleaning df"):
for word in row:
if term_freq[word]<=cutoff:
row.remove(word)
else:
continue
return df
我上传了一个简短的 csv 示例供此处使用:https://pastebin.com/g25bHCC7。
我的问题是:remove_sparse_words_from_df 函数删除了一些低于截止值的单词,但不是全部。示例:在运行remove_sparse_words_from_df 之后,原始数据帧(数据)中出现了大约 10k 的单词“clean”,仍然存在大约 2k。其他词也一样。
我错过了什么?
【问题讨论】: