假设我们有一个如下所示的示例数据帧:
df = pd.DataFrame({'A': [np.nan, 0.5, 0.5, 0.5, 0.5],
'B': [np.nan, 3, 4, 1, 2],
'C': [10, np.nan, np.nan, np.nan, np.nan]})
>>> df
A B C
0 NaN NaN 10.0
1 0.5 3.0 NaN
2 0.5 4.0 NaN
3 0.5 1.0 NaN
4 0.5 2.0 NaN
第‘D’列是通过以下运算计算的:
>>> df
A B C D
0 NaN NaN 10.0 10.0
1 0.5 3.0 NaN 8.0 = (10 x 0.5) + 3
2 0.5 4.0 NaN 8.0 = (8 x 0.5) + 4
3 0.5 1.0 NaN 5.0 = (8 x 0.5) + 1
4 0.5 2.0 NaN 4.5 = (5 x 0.5) + 2
计算列‘D’反映了在每个行操作中调用列‘C’的前一行和列‘A’和‘B’的当前行的折叠过程.
我try 过使用for循环、functools.reduce()和迭代器来实现这一点,但我想知道是否有另一种方法可以尽可能多地使用向量化,以便在更大的数据集中使此操作更有效.