You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pandas匹配替换DataFrame中对应情绪的特征词汇?

实现方案

核心思路

先把两个情绪特征词表转为查找映射字典,再逐行拆分目标字段的词汇做匹配替换,比反复遍历两个特征DataFrame效率高很多。

具体实现步骤

  • 第一步:构建情绪-特征词映射字典
  • 第二步:定义单行文本处理函数,完成拆分、匹配、拼接操作
  • 第三步:将函数应用到目标DataFrame的moods列

完整可运行代码

import pandas as pd

# 你给出的两个特征词DataFrame
anger = pd.DataFrame({'anger': ['Angry','Acerbic', 'Aggressive', 'Bitter', 'Fiery', 'Outraged', 'Rebellious', 'Snide']})
happiness= pd.DataFrame({'happiness':['Happy','Cheerful','Bright', 'Celebratory', 'Effervescent', 'Gleeful', 'Humorous', 'Irreverent', 'Rambunctious', 'Raucous', 'Rollicking', 'Silly', 'Sweet', 'Whimsical', 'Witty', 'Joyous']})

# 1. 构建映射字典
mood_mapping = {}
for word in anger['anger']:
    mood_mapping[word] = 'Anger'
for word in happiness['happiness']:
    mood_mapping[word] = 'Happiness'

# 2. 定义处理函数
def replace_mood_word(text):
    # 拆分词汇并去除前后空格
    word_list = [w.strip() for w in text.split(',')]
    # 逐个匹配映射,无匹配返回None,最后拼接为字符串
    replaced_list = [str(mood_mapping.get(word, None)) for word in word_list]
    return ', '.join(replaced_list)

# 3. 构造示例目标DataFrame并处理
target_df = pd.DataFrame({
    'moods': [
        'Aggressive, Literate, Rebellious, Fun',
        'Boisterous, Bright, Acerbic, Silly'
    ]
})
target_df['moods'] = target_df['moods'].apply(replace_mood_word)

# 输出结果查看
print(target_df)

可选优化

如果你的实际数据存在大小写不统一的问题,可在构建字典和匹配的时候统一转为小写,避免匹配失败:

# 构建字典时转小写
mood_mapping[word.lower()] = 'Anger'
# 匹配时也转小写
mood_mapping.get(word.lower(), None)

内容的提问来源于stack exchange,提问作者PSCM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:48:03