Python 使用逻辑真/假聚合对数据帧重新采样

Python 使用逻辑真/假聚合对数据帧重新采样,python,pandas,aggregate,resampling,Python,Pandas,Aggregate,Resampling,对不起,如果标题不是很清楚,但我想不出一个好的方式来框架它 我想在每天对数据帧重新采样时做一些高级逻辑 因此,我有一个名为的数据框架,如下所示: agg_tradeid price quantity fst_tradeid \ timestamp 2017-12-08 06:03:13.653

对不起,如果标题不是很清楚,但我想不出一个好的方式来框架它

我想在每天对数据帧重新采样时做一些高级逻辑

因此,我有一个名为
的数据框架,如下所示:

                         agg_tradeid    price  quantity  fst_tradeid  \
timestamp                                                              
2017-12-08 06:03:13.653            0  0.00023     100.0            0   
2017-12-08 06:08:00.292            1  0.00030    1999.0            1   
2017-12-08 06:09:05.218            2  0.00035    3339.0            2   
2017-12-08 06:09:17.911            3  0.00035     206.0            3   
2017-12-08 06:10:13.633            4  0.00033    1533.0            4   

                         lst_tradeid      timestamp     buy best_price  
timestamp                                                               
2017-12-08 06:03:13.653            0  1512712993653    True       True  
2017-12-08 06:08:00.292            1  1512713280292    True       True  
2017-12-08 06:09:05.218            2  1512713345218   False       True  
2017-12-08 06:09:17.911            3  1512713357911   False       True  
2017-12-08 06:10:13.633            4  1512713413633   False       True  
我想以一种有点复杂的方式重新采样到每日(
'1D'

  • 价格:ohlc
  • 数量:总和
  • 创建一个新列,
    ract
    ,该列将是
    1D
    数量
    ,其中
    buy==True
    除以重新采样的
    数量
这是给我带来麻烦的最后一点,我可以简单地用以下方法完成另外两项:

trades.resample('1D').agg({'price':'ohlc', 'quantity':'sum'})

您可以使用临时变量单独计算ract,并将结果分配回:

i = df.assign(v=df.quantity.where(df.buy))\
      .resample('1D')[['v', 'quantity']]\
      .sum()

j = df.resample('1D').agg({'price':'ohlc', 'quantity':'sum'})
j['ract'] = i.v / i.quantity

j

              price                            quantity      ract
               open     high      low    close quantity          
timestamp                                                        
2017-12-08  0.00023  0.00035  0.00023  0.00033   7177.0  0.292462

当有多个买进=真条件时,当重采样时,你会考虑什么?对于期望的时间段(即代码>购买==真值< /代码>的所有<代码>数量<代码>的总和,在期望的时间段除以所有的代码>数量< /代码>的总和(不管<代码>购买< /代码>变量)谢谢,这很有帮助。编辑了我的答案。太好了,就是这个。非常感谢。