我有一个数据框,如下所示:
if
我正在尝试计算列 C ,如以下代码所示:
A
0.00318492274476
0.007763122173354
0.004294100473018
0.013777979548886
0.0034739588115
0.006684277028588
0.004035181028713
0.010939940038334
-0.000593509425213
.
.
.
0.98272
B
0.007763122173354
0.004294100473018
0.013777979548886
0.0034739588115
0.006684277028588
0.004035181028713
0.010939940038334
0.000593509425213
.
.
.
0.078937
这种方法的计算成本很高。我想知道什么是计算列C而不是循环的最有效方法? operation_key = 'A'
operation_key_1 = 'B'
column_key = 'C'
df[column_key] = np.nan
for i in range(65, len(df)):
df[column_key][i] = (df[operation_key_1][i-65:i].sum() /np.abs(df[operation_key][i])) * 65
可以工作,但是我们可以在单列上滚动!
答案 0 :(得分:1)
尝试使用滚动和求和的以下代码:
df[column_key] = ( df[operation_key_1].rolling(65).sum() / np.abs(df[operation_key]) ) * 65