我有这个DataFrame,并想产生3行的切片,并返回一个新的DateFrame,其中所有这3行集合总计为包含最高日期,最低开盘价,最高最高价和最后关闭价的行。

       date        open        high         low       close
0    1498907700  0.00010020  0.00010020  0.00009974  0.00010019
1    1498908000  0.00010010  0.00010010  0.00010010  0.00010010
2    1498908300  0.00010010  0.00010010  0.00009957  0.00009957
3    1498908600  0.00009957  0.00009957  0.00009957  0.00009957
4    1498908900  0.00010009  0.00010009  0.00009949  0.00009959
5    1498909200  0.00009987  0.00009991  0.00009956  0.00009956
...
789


我可以对groupby进行排序,然后在所有这些切片上应用函数以产生新的DataSet吗?

输出数据集应如下所示:

       date        open        high         low       close
0   1498908300  0.00010010  0.00010020  0.00009957  0.00009957
1   1498909200  0.00009957  0.00010009  0.00009949  0.00009956
...
789


如果行数不是3的倍数,我想在第3行的第一组中处理孤儿。

最佳答案

您可以使用groupby和聚合

df.groupby(df.index//3).agg({'date': 'max', 'open': 'min', 'high': 'max', 'low': 'min','close': 'last'})


你得到

    date        open        high        low         close
0   1498908300  0.00010010  0.00010020  0.00009957  0.00009957
1   1498909200  0.00009957  0.00010009  0.00009949  0.00009956

09-25 18:49