Pandas DataFrame匹配替换问题:将匹配词替换为另一DataFrame的基准词
解决方案
核心思路
先将df2中所有形容词的原级、比较级、最高级统一映射到对应的基准原级词,再对df1的分词列表逐词匹配替换即可。
具体实现
第一步:生成词映射字典
方法1:遍历df2行生成(易理解,适合小体量df2)
word_map = {} for _, row in df_2.iterrows(): base = row['word'] word_map[row['word']] = base word_map[row['more']] = base word_map[row['most']] = base
方法2:melt转换生成(效率更高,适合大体量df2)
melted_df = df_2.melt(id_vars='word', value_vars=['word', 'more', 'most']) word_map = dict(zip(melted_df['value'], melted_df['word']))
两种方法生成的映射字典结构一致,示例如下:{'happy':'happy', 'happier':'happy', 'happiest':'happy', 'sad':'sad', 'sadder':'sad', 'saddest':'sad'}
第二步:逐词替换生成新列
# 定义替换函数 def transfer_sentence(word_list): return [word_map.get(w, w) for w in word_list] # 应用到sentence列 df_1['new_sentence'] = df_1['sentence'].apply(transfer_sentence)
运行后输出的df_1与你给出的预期结果完全一致。
内容的提问来源于stack exchange,提问作者Leonie
相关产品推荐
相关产品推荐

