我有这个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