2
我有一个数据框(或numpy的二维数组,如果你愿意),像这样:更好的方法来转发用计算填充DataFrame /数组?
0 1 2 3 4 5 6 7 8 9
tstamp
2016-09-19 00:00:00 29.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
2016-09-19 00:01:00 29.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
2016-09-19 00:02:00 29.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
2016-09-19 00:03:00 29.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
2016-09-19 00:04:00 29.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
我需要填写的所有NaN
这一点:
for i in range(1, 10):
df.loc[:, i] = const + df.loc[:, i-1].multiply(const)
哪里const
是一些常数。现在,很明显,想到的第一件事就是用切片:
df.loc[:, 1:] = const + df.loc[:, :-1].multiply(const)
但是请注意,下一列的值取决于前一列的计算值。有没有办法在循环之外做到这一点?
PS,虽然这是完全没有必要的,但:
df.loc[row_slice, col_slice].values
将返回切片帧的numpy NDArray
。
我知道你不会失望!这是一个很好的黑客功能。我在'numpy'中有3个实现,但我从来没有想过使用'power' ... – Kartik
其实,因为我问了我最简单的模型,并且单独看它,'power'是最自然的选择。对于其他一些更复杂的问题,常数不是那么简单,它实际上是模型系数,可能不同。我会在明天再玩一次... – Kartik
我不能保证我有时间看它,但我总是欢迎挑战。我会尝试寻找另一种模式。 – piRSquared