我有一只熊猫
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()]
SyntaxError:不能分配给函数调用
a = []
for x in df.iterrows():
s = x.rolling_sum(12)
a.append(s)
AttributeError:'tuple‘对象没有属性'rolling_sum’
发布于 2013-08-11 17:53:11
我想也许你要找的是
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()]
有关列表理解的更多信息,请参见医生们。
列表理解的基本形式是
[expression for variable in sequence]
在Python执行之后,生成的列表相当于result
:
result = []
for variable in sequence:
result.append(expression)
有关列表理解的完整语法,请参见此链接。
https://stackoverflow.com/questions/18178537
复制相似问题