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

如何将原始推文与计算出的情感值合并到新DataFrame中

解决思路与修改方案

没问题,我帮你调整代码,让原始推文和对应的情感值直接关联起来。核心就是把存储的键从过滤后的文本换成原始推文,同时确保每一条原始内容和情感值的对应关系不跑偏。

先看你原始代码里的小问题:手动维护x索引容易出错,而且用字典存储时如果有重复推文会被覆盖。我给你优化后的代码,同时解释关键改动点:

修改后的完整代码

import pandas as pd
import re
from textblob import TextBlob
# 假设你已经初始化好翻译器对象 translator

# 用列表存储元组更稳妥,避免重复推文被覆盖
tweet_sentiment_data = []

# 用enumerate遍历,直接拿到索引和原始推文
for count, original_tweet in enumerate(df['text'], start=1):
    # 保留你原来的文本过滤逻辑
    filtered_tweet = re.sub('[^A-Za-z0-9]', ' ', original_tweet)
    filtered_tweet = re.sub(' +',' ', filtered_tweet)
    
    # 翻译(因为只传了一个文本,直接取第一个结果即可)
    translation = translator.translate([filtered_tweet], dest='en')[0]
    
    # 计算情感值
    sentiment_analysis = TextBlob(translation.text)
    sentiment_value = sentiment_analysis.sentiment
    
    # 把原始推文和情感值作为元组加入列表
    tweet_sentiment_data.append( (original_tweet, sentiment_value) )
    
    # 保留你原来的进度打印
    print(count)
    print(f"原始推文: {original_tweet}")
    print(f"情感分析结果: {sentiment_value}")

# 生成最终的DataFrame
df2 = pd.DataFrame(tweet_sentiment_data, columns=['Original Tweets', 'Sentiment'])

关键改动说明

  1. 替换存储键为原始推文:
    不再用过滤后的translation.origin作为字典键,而是直接用遍历得到的original_tweet,确保最终DataFrame展示的是原始推文内容。

  2. 用列表存储元组替代字典:
    避免了原始推文重复时被覆盖的问题(如果你的原始数据集有重复行,字典会丢失数据,列表元组能完整保留所有记录)。

  3. 简化遍历与索引逻辑:
    用enumerate(df['text'], start=1)直接获取计数和原始推文,不用手动维护x变量,减少索引错误的概率。

  4. 简化翻译结果获取:
    因为每次只传入一个过滤后的文本,直接取translations[0]即可,不需要额外的循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:16:38