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