使用多个列值进行当前单元格值的复杂计算

时间:2019-05-07 07:26:30

标签: python python-3.x pandas

我有一个数据框,如下所示:

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 可以工作,但是我们可以在单列上滚动!

1 个答案:

答案 0 :(得分:1)

尝试使用滚动和求和的以下代码:

df[column_key] = ( df[operation_key_1].rolling(65).sum() / np.abs(df[operation_key]) ) * 65