Python pandas中按日期、股票代码聚合行计算情感得分的实现方法
实现步骤
整个操作逻辑和你在Excel中用数据透视表、SUMIFS公式做统计的逻辑完全一致,不需要写复杂的自定义规则,按以下两步操作即可:
- 将文本类的情感标注转换为可计算的数值
因为规则是positive计+1、negative计-1,直接通过字典映射把文本转成对应数字就行,不需要写嵌套判断:# 生成临时计算列:positive对应1,negative对应-1 df["sentiment_score_temp"] = df["sentiment"].map({"positive": 1, "negative": -1}) - 按指定维度分组汇总
按照date、stock_ticker两个维度对临时数值列求和,直接就能得到组内累计的情感分,最后重命名列、保留目标字段即可:# 分组聚合,as_index=False 保证两个维度字段是普通列,而非pandas特有索引结构 final_df = df.groupby( by=["date", "stock_ticker"], as_index=False )["sentiment_score_temp"].sum().rename( columns={"sentiment_score_temp": "sentiment_score"} )[["date", "stock_ticker", "sentiment_score"]]
操作对照说明(适配你熟悉的Excel逻辑)
groupby(by=["date", "stock_ticker"])完全对应Excel数据透视表中将date、stock_ticker拖入“行”区域作为分组维度的操作- 对临时数值列做
sum()求和,对应透视表中将临时数值列拖入“值”区域,选择“求和”汇总方式的操作 as_index=False参数相当于跳过Excel透视表默认的分层行标签结构,直接输出普通二维表格,和你平时在Excel里看到的普通单元格表格结构一致,后续做筛选、排序都不会有额外障碍- 整个计算过程自动适配“同组内positive加1、negative减1”的累计规则,不需要额外写分支判断,遇到同组正负情感混合的情况,求和结果就是你需要的最终得分
内容的提问来源于stack exchange,提问作者Dycann
相关产品推荐
相关产品推荐

