【发布时间】:2018-12-29 02:24:49
【问题描述】:
您好,我有一个包含一列的数据框,我只想添加另一列,该列采用原始列的滚动乘积。我已经在谷歌上搜索了一段时间,但这似乎是一个基本的功能——不确定我是否遗漏了一些东西。我喜欢将 B 列作为输出。
A B
1 1
2 2
3 6
4 24
5 120
6 720
7 5040
如果它存在的话,我基本上是在寻找这样的东西:
数据['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
【问题讨论】:
-
我已经浏览了以前的帖子。我唯一能找到有效的方法是 5 年前问过并使用 rolling_apply 似乎不再是一个选项
-
您说的是“滚动产品”,但在我看来,这更像是一种扩展产品。窗口为 1 的滚动产品只是系列本身,不是吗?
-
骗子的答案已经有一段时间没有出现在 pandas 中了,虽然这可能仍然是骗子,但必须有更好的目标
-
@DSM 你说得对——我需要一个扩展产品。
标签: python python-3.x pandas dataframe