【发布时间】:2019-11-27 16:22:26
【问题描述】:
我有一个这样的数据集:
YEAR MONTH VALUE
2018 3 59.507
2018 3 26.03
2018 5 6.489
2018 2 -3.181
我正在尝试执行类似的计算 ((VALUE1 + 1) * (VALUE2 + 1) * (VALUE3+1).. * (VALUEn +1)-1) 超过 VALUE 列
最好的方法是什么?
【问题讨论】:
我有一个这样的数据集:
YEAR MONTH VALUE
2018 3 59.507
2018 3 26.03
2018 5 6.489
2018 2 -3.181
我正在尝试执行类似的计算 ((VALUE1 + 1) * (VALUE2 + 1) * (VALUE3+1).. * (VALUEn +1)-1) 超过 VALUE 列
最好的方法是什么?
【问题讨论】:
用途:
df['VALUE'].add(1).prod()-1
#-26714.522733572892
如果您希望累积产品创建一个新列,请使用Series.cumprod:
df['new_column']=df['VALUE'].add(1).cumprod().sub(1)
print(df)
YEAR MONTH VALUE new_column
0 2018 3 59.507 59.507000
1 2018 3 26.030 1634.504210
2 2018 5 6.489 12247.291029
3 2018 2 -3.181 -26714.522734
【讨论】:
我想你在追求...
cum_prod = (1 + df['VALUE'].cumprod()) - 1
【讨论】:
首先你应该了解你正在处理的对象,它们有什么属性和方法。这是一个数据框,值列是一个系列。
这里是文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.html
【讨论】: