python:每列几个cumprod
我有以下建议:python:每列几个cumprod,python,pandas,apply,Python,Pandas,Apply,我有以下建议: id column 1 NaN 1 1 1 1.05 1 1.10 1 NaN 1 NaN 1 3 1 1.08 1 1.07 1 NaN 我想在列上创建一个累积产品。但是,产品应该在NaN介于两者之间时重新启动。结果应该如下所示: id column 1 NaN 1 1 1 1.05 1 1.155 1 NaN
id column
1 NaN
1 1
1 1.05
1 1.10
1 NaN
1 NaN
1 3
1 1.08
1 1.07
1 NaN
我想在列上创建一个累积产品。但是,产品应该在NaN介于两者之间时重新启动。结果应该如下所示:
id column
1 NaN
1 1
1 1.05
1 1.155
1 NaN
1 NaN
1 3
1 3.24
1 3.4668
1 NaN
下面的代码似乎很理想,但它返回了错误:AttributeError:“float”对象没有属性“shift”
df["column"] = df["column"].apply(lambda x: x*x.shift(1))
另外:此命令仅返回零,并将整个列视为一个产品,因此似乎不适合我的问题:
df["column"] = df["column"].cumprod()
让我们将groupby与cumsum一起使用,以确定要应用cumprod的组:
输出:
id column
0 1 NaN
1 1 1.0000
2 1 1.0500
3 1 1.1550
4 1 NaN
5 1 NaN
6 1 3.0000
7 1 3.2400
8 1 3.4668
9 1 NaN
让我们将groupby与cumsum一起使用,以确定要应用cumprod的组:
输出:
id column
0 1 NaN
1 1 1.0000
2 1 1.0500
3 1 1.1550
4 1 NaN
5 1 NaN
6 1 3.0000
7 1 3.2400
8 1 3.4668
9 1 NaN