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

如何为Pandas DataFrame中condition为True的value计算半衰期5分钟的EWMA

基于Condition为True的指数加权移动平均(EWMA)计算

实现步骤

我们需要仅针对condition列值为True的行,计算value列的指数加权移动平均(半衰期5分钟),并将结果映射回原DataFrame的新列中。

完整代码

import pandas as pd

# 构建原始DataFrame
df = pd.DataFrame({
                  'year': [2016]*10,
                  'month': [1]*10,
                  'day' : [1]*10,
                  'hour': [10]*10,
                  'minute': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]})
df.index = pd.to_datetime(df)
df['condition'] = [True, False, True, False, False, False, False, False, False, True]
df['value'] = [1,2,3,4,5,6,7,8,9,10]
df = df[['condition', 'value']]

# 计算仅condition为True时的EWMA
# 筛选符合条件的value
true_subset = df[df['condition']]['value']
# 计算EWMA,halflife设为5分钟,adjust=False使用递归计算逻辑
ewma_result = true_subset.ewm(halflife='5min', adjust=False).mean()
# 将结果合并回原DataFrame
df['ewma_value'] = ewma_result

结果说明

执行后,df的ewma_value列仅在condition为True的行有值,其余行显示NaN,核心结果示例:

conditionvalueewma_value
2016-01-01 10:01:00True11.000000
2016-01-01 10:03:00True31.777156
2016-01-01 10:10:00True106.496855

关键参数解释

  • halflife='5min':指定半衰期为5分钟,因DataFrame索引为datetime类型,Pandas会自动根据时间间隔计算权重衰减。
  • adjust=False:采用递归式EWMA计算(EWMA_t = α*value_t + (1-α)*EWMA_{t-1}),更贴合实时更新场景;若设为True则使用加权平均式计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:45:35