【发布时间】:2019-04-13 04:38:13
【问题描述】:
我正在尝试将滚动累积产品添加到熊猫系列中。我的输入系列是:
s
0 1
1 2
2 3
3 4
4 5
5 6
我想得到一个结果系列,它给我之前“n”值的累积乘积。所以如果'n'是3,我想得到:
s
0 n/a
1 n/a
2 6
3 24
4 60
5 120
我提出的代码使用 rolling_apply 和 lambda 函数并产生 TypeError:
import pandas as pnd
df = pnd.DataFrame()
df['s'] = [1,2,3,4]
print (df)
print (pnd.rolling_apply(df.s,2,lambda x : x.cumprod()))
TypeError: only length-1 arrays can be converted to Python scalars
有人知道怎么做吗?
【问题讨论】:
-
这只是一个滚动的常规产品,不是吗?
-
我想你想要
numpy.prod而不是cumprod。 -
user2357112...我可能是错的,但我没有这个 pandas 有 rolling_prod 功能
-
user2357112... np.prod(df.s,3) 产生一个标量 720(它是系列中所有数字的乘积)。这不是我要找的
-
rolling_applyprod.