Python 数据帧中的累积或滚动产品
嗨,我有一个带有列的dataframe,我只想添加另一个列,它接受原始列的滚动乘积。我在谷歌上搜索了一段时间,但这似乎是一个基本的功能——不确定我是否遗漏了什么。Id希望获得列B作为输出Python 数据帧中的累积或滚动产品,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,嗨,我有一个带有列的dataframe,我只想添加另一个列,它接受原始列的滚动乘积。我在谷歌上搜索了一段时间,但这似乎是一个基本的功能——不确定我是否遗漏了什么。Id希望获得列B作为输出 A B 1 1 2 2 3 6 4 24 5 120 6 720 7 5040 我基本上是在寻找这样的东西,如果它存在的话: 数据['B']=数据['A'].滚动(窗口=1).产品() 我在早些时候发现了这篇文章,但它似乎使用的是rolling_apply,不再处于活动状态?:
A B
1 1
2 2
3 6
4 24
5 120
6 720
7 5040
我基本上是在寻找这样的东西,如果它存在的话:
数据['B']=数据['A'].滚动(窗口=1).产品()
我在早些时候发现了这篇文章,但它似乎使用的是rolling_apply,不再处于活动状态?:
我尝试过使用类似的解决方案,但似乎不起作用
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
好像你想要
也可以
df.v.expanding().agg(lambda a:a.prod())
0 1.0
1 2.0
2 6.0
3 24.0
4 120.0
5 720.0
好像你想要
也可以
df.v.expanding().agg(lambda a:a.prod())
0 1.0
1 2.0
2 6.0
3 24.0
4 120.0
5 720.0
我仔细阅读了以前的文章。我能找到的唯一有效的方法是在5年前被问到并使用了rolling_apply,它似乎不再是一个选项你说的“rolling product”,但在我看来,它更像是一个扩展产品。一个窗口为1的滚动产品就是这个系列本身,不是吗?复制品的答案已经有一段时间没有出现在《熊猫》中了,虽然这可能仍然是一个复制品,但必须有一个更好的版本target@DSM事实上,你是对的,我需要一个扩展产品。我仔细阅读了以前的文章。我能找到的唯一有效的方法是在5年前被问到并使用了rolling_apply,它似乎不再是一个选项你说的“rolling product”,但在我看来,它更像是一个扩展产品。一个窗口为1的滚动产品就是这个系列本身,不是吗?复制品的答案已经有一段时间没有出现在《熊猫》中了,虽然这可能仍然是一个复制品,但必须有一个更好的版本target@DSM事实上你是对的,我需要一个扩展产品。那太完美了+回答得好。特别是在扩展方面。那太完美了+回答得好。特别是在扩张方面。