基于不同列的具有可变窗口的 Pandas 滚动平均值
Posted
技术标签:
【中文标题】基于不同列的具有可变窗口的 Pandas 滚动平均值【英文标题】:Pandas rolling mean with variable window based on an different column 【发布时间】:2021-12-11 02:56:10 【问题描述】:我想在一个窗口上执行滚动平均值,该窗口取决于我的 DataFrame 中列的值。谁能帮我?这是一个起点:
import pandas as pd
import numpy as np
rng = np.random.default_rng()
df = pd.DataFrame(rng.integers(0, 100, size=(100, 2)), columns=list('AB'))
df.loc[:,'B']=df['B']//10
现在我想获得基于 B 列窗口的系列 df.A
的滚动平均值。例如,如果 df.B[0]
值 3 my_series[0]=df.A.rolling(3).mean()[0]
等等 my_series[1]
等...
你能帮帮我吗?感谢您的宝贵时间。
【问题讨论】:
【参考方案1】:一种选择是循环遍历数据框,并为每一行分配一个等于 rolling_mean 的新列。
df['rolling_mean'] = np.nan
for ind in range(len(df)):
df.loc[df.index[ind], 'rolling_mean'] = df.A.rolling(df.loc[df.index[ind], 'B']).mean()[ind]
【讨论】:
以上是关于基于不同列的具有可变窗口的 Pandas 滚动平均值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 pandas DataFrame 中忽略滚动平均值计算的 NaN 值?
Python Pandas:计算可变行数的滚动平均值(移动平均值)
pandas使用ewm函数计算dataframe指定数据列的的特定周期指数移动(滚动)平均(Exponential Moving Average)