很抱歉,如果标题没有立即清楚,但我想不出一个好方法来构建它。
我想在每天重新采样DataFrame时做一些高级逻辑。
所以我有一个名为trades
的DataFrame,如下所示:
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'
)。
price: ohlc
quantity: sum
ract
,quantity
其中buy==True
除以quantity
的总重新采样1D
。这是给我带来麻烦的最后一点,我可以通过以下方式完成其他2:
trades.resample('1D').agg({'price':'ohlc', 'quantity':'sum'})
答案 0 :(得分:3)
您可以使用临时变量单独计算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