【问题标题】:pandas rolling_apply cumprodpandas rolling_apply cumprod
【发布时间】: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.

标签: python pandas


【解决方案1】:

感谢用户 2357112。这是我想出的有效代码...

import pandas as pnd
df = pnd.DataFrame()
df['s'] = [1,2,3,4, 5, 6]
print (df)
print (pnd.rolling_apply(df.s,3,lambda x : x.prod()))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 2014-01-28
    • 2014-01-29
    • 2022-01-21
    相关资源
    最近更新 更多