数据框中的累积或滚动产品

时间:2018-07-20 18:08:49

标签: python python-3.x pandas dataframe

嗨,我有一个带有一列的数据框,我只想添加另一个采用原始列的滚动乘积的列。我已经搜索了一段时间,但这似乎是一种基本功能-不确定是否丢失了某些东西。想要将B列作为输出。

A   B
1   1
2   2
3   6
4   24
5   120
6   720
7   5040

我本质上是在寻找像这样的东西:

data ['B'] =数据['A']。rolling(window = 1).product()

我从较早时发现了这篇文章,但似乎使用的是rolling_apply,它不再有效?:

How to calculate rolling cumulative product on Pandas DataFrame

我曾尝试在此处使用类似的解决方案,但似乎无法正常工作。

dftest= pd.DataFrame([1,2,3,4,5,6,7],columns=['A'])
dftest['cum']=dftest['A'].rolling(1).apply(lambda x:x.prod())

输出:

   A  cumprod
0  1  1.0
1  2  2.0
2  3  3.0
3  4  4.0
4  5  5.0
5  6  6.0
6  7  7.0

1 个答案:

答案 0 :(得分:1)

好像你想要cumprod

data: avg_rates.map(&:to_f)

也可以

df = pd.DataFrame({'v':[1,2,3,4,5,6]})
df['prod'] = df.v.cumprod()

    v   prod
0   1   1
1   2   2
2   3   6
3   4   24
4   5   120
5   6   720