批量处理含5万多词对的DataFrame,移除行内重复高频词需求
自动化移除DataFrame中列内重复出现的词汇
解决方案代码
import pandas as pd # 读取你的数据(替换成实际读取方式,比如pd.read_csv/pd.read_excel) # df = pd.read_csv('your_data.csv') # 示例数据(仅作演示) data = { 'en': [ 'Tuberculosis of heart', 'Tuberculosis of myocardium', 'Tuberculosis of endocardium', 'Tuberculosis of oesophagus', 'Zoster keratoconjunctivitis', 'Zoster blepharitis', 'Zoster iritis' ], 'ko': [ '심장의 결핵', '심근의 결핵', '심내막의 결핵', '식도의 결핵', '대상포진 각막결막염', '대상포진 안검염', '대상포진 홍채염' ] } df = pd.DataFrame(data) def remove_repeated_terms(column): # 拆分所有行的词汇并展平,统计每个词汇的出现频率 all_terms = column.str.split().explode() term_frequency = all_terms.value_counts() # 筛选出列内出现多次的词汇 repeated_terms = set(term_frequency[term_frequency > 1].index) # 对每行过滤重复词汇后拼接成字符串 return column.apply(lambda row: ' '.join([term for term in row.split() if term not in repeated_terms])) # 处理英文和韩文列 df['en'] = remove_repeated_terms(df['en']) df['ko'] = remove_repeated_terms(df['ko']) # 输出结果或保存到文件 print(df) # df.to_csv('processed_data.csv', index=False)
代码说明
- 词汇拆分与频率统计:通过
str.split()拆分每行文本为词汇列表,explode()将所有词汇展平成一维序列,再用value_counts()统计每个词汇在整列中的出现次数。 - 重复词汇过滤:提取出现次数大于1的词汇集合,对每行文本过滤掉这些重复词汇,仅保留仅出现一次的词汇并拼接成新字符串。
- 效率适配:Pandas的矢量化操作和
apply()方法针对5万行数据完全高效,无需手动处理,几秒内即可完成。
边界情况提示
如果某行所有词汇均为列内重复项,过滤后会得到空字符串。若需要处理这种情况,可以在apply()的lambda函数中添加判断:
lambda row: ' '.join([term for term in row.split() if term not in repeated_terms]) or row
这样会在过滤结果为空时保留原行内容。
内容的提问来源于stack exchange,提问作者이승우
相关产品推荐
相关产品推荐

