如何迭代调用自定义函数为Pandas DataFrame新列填充值
解决步骤
第一步 修改情感分析函数,增加返回值
原函数仅打印结果无返回值,只需把最后一行的打印逻辑替换为返回逻辑即可:
def sample_analyze_sentiment(text_content): """ 分析字符串的情感得分 Args: text_content: 待分析的文本内容 Returns: 文本的整体情感得分,范围-1(负面)到1(正面) """ client = language_v1.LanguageServiceClient() type_ = language_v1.Document.Type.PLAIN_TEXT language = "en" document = {"content": text_content, "type_": type_, "language": language} encoding_type = language_v1.EncodingType.UTF8 response = client.analyze_sentiment(request = {'document': document, 'encoding_type': encoding_type}) # 替换原打印逻辑为返回得分 return response.document_sentiment.score
第二步 写入DataFrame新列,两种实现可选
方案1:适配你现有循环逻辑修改
import pandas as pd df = pd.read_csv('Final.csv') # 初始化存储情感得分的新列 df['sentiment_score'] = None # 遍历索引和对应文本,逐行写入结果 for idx, text in enumerate(df['Text']): df.loc[idx, 'sentiment_score'] = sample_analyze_sentiment(text)
方案2:更简洁的pandas apply实现
import pandas as pd df = pd.read_csv('Final.csv') # 直接对Text列应用分析函数,结果直接赋值给新列 df['sentiment_score'] = df['Text'].apply(sample_analyze_sentiment)
注意:如果你的数据量较大,建议先做空值过滤,避免sample_analyze_sentiment调用时传入空文本触发API报错,同时可优先使用Google Natural Language的批量分析接口减少请求开销,避免触发频率限制。
内容的提问来源于stack exchange,提问作者duy quan duc
相关产品推荐
相关产品推荐

