我需要用计算来填充NaN空间,这取决于dataframe = df中的先前值.我到目前为止所拥有的是:
df = pd.DataFrame({'a': [None] * 6, 'b': [2, 3, 10, 3, 5, 8]})
df["c"] =np.NaN
df["c"][0] = 1
df["c"][2] = 3
i = 1
while i<10:
df.c.fillna(df.c.shift(i)*df.b,inplace=True)
i+1
不幸的是,使用while循环的解决方案不起作用,对于熊猫来说无疑是非常糟糕的解决方案.所以我在寻找一种
df.c.fillna(method='ffill'*df.b,inplace=True)
我知道这也不起作用,我只是认为这样可以使我更清楚地找到想要的东西.
在填充数据框之前,它看起来像这样:
b c
0 2 1
1 3 NaN
2 10 3
3 3 NaN
4 5 NaN
5 8 NaN
预期的结果应如下所示:
b c
0 2 1 # nothing filled in since data is set from df["c"][0] = 1
1 3 3 # fill in previous c * b = 1 * 3 = 3
2 10 3 # nothing filled in since data is set from df["c"][2] = 3
3 3 9 # fill in previous c * b = 3 * 3 = 9
4 5 45 # fill in previous c * b = 9 * 5 = 45
5 8 360 # fill in previous c * b = 45 * 8 = 360
基本上就是这样:如果没有可用的数据,则应填充一个计算.