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