条件计算数据框

时间:2019-05-27 01:35:23

标签: python pandas

我想在此数据帧上进行的计算很简单,但我仍然没有想到任何初步的代码。列“ 10”中的数据已排序(升序)。

我想: 1.列'10'* 1.05中的第一行(加5%)       例如:871103 * 1.05 = 914658.15(df中最接近的值为914657) 2.计算行数以查找更接近结果的数据    在1。       例如:下方df中的第16行。 3.汇总“ 2”列中的相同行数。      例如:下方df中为0.04242

数据帧示例:

             2              10
1                             
asks:   0.1546         871103
        0.011          871280
        0.004          871315
        0.01           871333
        0.004          871341
        0.0106         871347
        0.01           871347
        0.023          871363
        0.002          871365
        0.01           871401
        0.001          871462
        0.139          871477
        0.005          871483
        0.005          871499
        0.03           871502
        0.005          914657
        0.01119222     914800
        0.50000013     920000

输出:

             2               10
 1                             
   asks:    0.4242         914657

1 个答案:

答案 0 :(得分:1)

假设df是您的数据帧:

idx = (df['10'] - (df['10'][0] * 1.05)).abs().idxmin()
csdf = df.cumsum()
csdf['10'] = df['10']

idx是您要查找的行的索引:从第'10'列的每个值与第{{1列的第一个值之间的差的绝对值的最小值}}乘以1.05。
'10'是通过对csdf的元素进行累加而获得的新数据帧,然后用原始的df列替换了'10'的{​​{1}}列csdf

所以

'10'

是您要查找的行。