gpt4 book ai didi

python - Iterrows 滚动总和

转载 作者:行者123 更新时间:2023-11-30 23:34:20 25 4
gpt4 key购买 nike

我有一个pandas数据框

from pandas import DataFrame, Series

其中每一行对应一个案例,每一列对应一个月份。我想在每 12 个月期间执行一次滚动求和。看起来很简单,但我被困住了

result = [x for x.rolling_sum(12) in df.iterrows()]
result = [x for x.rolling_sum(12) in df.T.iteritems()]

语法错误:无法分配给函数调用

a = []
for x in df.iterrows():
s = x.rolling_sum(12)
a.append(s)

AttributeError:“tuple”对象没有属性“rolling_sum”

最佳答案

我想也许你正在寻找的是

pd.rolling_sum(df, 12, axis=1)

在这种情况下,不需要列表理解。 axis=1 参数使 Pandas 计算 df的滚动总和。

例如,

import numpy as np
import pandas as pd
ncols, nrows = 13, 2
df = pd.DataFrame(np.arange(ncols*nrows).reshape(nrows, ncols))
print(df)
# 0 1 2 3 4 5 6 7 8 9 10 11 12
# 0 0 1 2 3 4 5 6 7 8 9 10 11 12
# 1 13 14 15 16 17 18 19 20 21 22 23 24 25

print(pd.rolling_sum(df, 12, axis=1))

打印

   0   1   2   3   4   5   6   7   8   9   10   11   12
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 66 78
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 222 234
<小时/>

关于您的列表理解:

您的列表理解部分的顺序错误。尝试:

result = [expression for x in df.iterrows()]

参见the docs有关列表推导式的更多信息。

列表理解的基本形式是

[expression for variable in sequence]

结果列表相当于Python执行后的结果:

result = []
for variable in sequence:
result.append(expression)

参见this link了解列表理解的完整语法。

关于python - Iterrows 滚动总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18178537/

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