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

Pandas:将每行因子值除以对应日期的分组均值

解决Pandas中按日期归一化因子列的问题

嘿,这个需求其实用Pandas的groupby搭配transform就能完美解决,完全不用手动去做数据合并这类繁琐的操作,一步到位!

核心思路

transform方法的妙处在于,它会把分组计算后的结果广播回原DataFrame的每一行,保持和原数据相同的形状,这样我们直接用原列的值除以对应的分组均值,就能自动实现按日期的归一化。

具体代码实现

假设你的DataFrame名为df,需要处理的因子列列表是factors,日期列是DATE,代码如下:

# 1. 按DATE分组,计算每个因子列的均值,并通过transform匹配到每一行
grouped_means = df.groupby('DATE')[factors].transform('mean')

# 2. 对原因子列做归一化:每个值除以对应日期的列均值
# 生成新的归一化列并添加到原DataFrame中
df[[f"{col}_norm" for col in factors]] = df[factors].div(grouped_means)

# 如果你只想替换原列的值,直接赋值即可
# df[factors] = df[factors].div(grouped_means)

举个直观的例子

假设你的原始数据是这样的:

DATEcol1col2
2023-01-0124
2023-01-0146
2023-01-0239
2023-01-0263

通过groupby('DATE')[factors].transform('mean')得到的grouped_means会是:

col1col2
35
35
4.56
4.56

最后执行除法后,生成的归一化列会是:

col1_normcol2_norm
0.66670.8
1.33331.2
0.66671.5
1.33330.5

这样就完美实现了你要的“每条记录的每个因子列除以对应日期下该列的均值”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:18:51