gpt4 book ai didi

python - 在 Pandas 中按整数天计算滚动平均值

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:33 25 4
gpt4 key购买 nike

我从 csv 中获取了一些数据并将其放入数据框中:

from pandas import read_csv
df = read_csv('C:\...', delimiter = ',', encoding = 'utf-8')
df2 = df.groupby(['i-j','day'])['i-j'].agg({'count'})

dataframe

我想为每个“i-j”计算其计数的七日移动平均值。首先,我认为我需要将计数为零的天数添加到表中。有没有一种简单的方法可以通过修改我上面的代码来做到这一点?换句话说,我希望缺失值计为 0。

然后我需要在数据框中添加另一列,计算前 7 天每个 i-j 的平均计数。我是否需要将天数转换为 pandas 识别的日期值才能使用某些滚动统计函数?或者我可以只更改“日期”列的类型并继续。

非常感谢!

最佳答案

可能有更好的方法来执行此操作,但考虑到您的 df2 起始 DataFrame,以下应该可行。

首先重新索引 df2 以用零填充缺失的天数:

new_index = pd.MultiIndex.from_product([df2.index.get_level_values(0).unique(), range(31)])
df2 = df2.reindex(new_index, fill_value=0)

(我假设您需要 31 天,但您可以根据需要更改它。)

现在,如果您取消堆叠这个重新索引的 DataFrame 并进行转置,您将得到一个 DataFrame,其中每一列都是 i-j 的条目并包含每天的计数:

df2.unstack().T

您可以计算此 DataFrame 的滚动平均值:

rm = pd.rolling_mean(df2.unstack().T, 7)

最后,您可以堆叠这个滚动方式的框架,以恢复到原始重新索引的df2的形状:

rm.T.stack(dropna=False)

关于python - 在 Pandas 中按整数天计算滚动平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27461682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com