我正在尝试总结按烛台图的时间序列索引的数据帧。数据帧每隔几秒钟就有一个样本,这对于长时间显示在折线图上并不是一个好主意。
我想在X分钟前总结一下,值为[ min, mean, max, 'start', 'end' ]
我可以确定最小值,均值和最大值,但是如何获得“开始”和“结束”?
数据帧(df)可能类似于:
DateTime Vals
2019-04-21 00:00:32 916892
2019-04-21 00:00:42 982588
2019-04-21 00:00:52 471452
2019-04-21 00:01:02 460576
2019-04-21 00:01:12 713764
2019-04-21 00:01:02 460576
...
2019-04-21 00:01:52 780545
2019-04-21 00:02:02 674151
...
2019-04-21 00:02:52 702329
2019-04-21 00:03:02 772237
...
2019-04-21 00:03:52 676713
2019-04-21 00:04:02 640359
...
2019-04-21 00:04:52 635224
2019-04-21 00:05:02 604004
....
(数据用...
替换以进行精简)
到目前为止,我正在工作:
grp = df.groupby(pd.Grouper(freq='60s'))['Vals'].agg(['min', 'mean', 'max' ])
哪个给了我“期望的”输出:
DateTime min mean max
2019-04-21 00:00:00 471452 790310.666667 982588
2019-04-21 00:01:00 460576 705737.500000 780545
2019-04-21 00:02:00 674151 711281.333333 772771
2019-04-21 00:03:00 653066 774984.833333 854880
2019-04-21 00:04:00 635224 655078.333333 676513
但是我还想要:
DateTime min mean max start end
2019-04-21 00:00:00 471452 790310.666667 982588 916892 471452
2019-04-21 00:01:00 460576 705737.500000 780545 460576 780545
2019-04-21 00:02:00 674151 711281.333333 772771 674151 702329
2019-04-21 00:03:00 653066 774984.833333 854880 640359 676713
2019-04-21 00:04:00 635224 655078.333333 676513 640359 635224
有一种方便的方法吗?
答案 0 :(得分:2)
为“开始”指定其他聚集"first"
,为“结束”指定"last"
:
df.groupby(pd.Grouper(freq='60s'))['Vals'].agg(
['min', 'mean', 'max', 'first', 'last'])
min mean max first last
DateTime
2019-04-21 00:00:00 471452 790310.666667 982588 916892 471452
2019-04-21 00:01:00 460576 603865.250000 780545 460576 780545
2019-04-21 00:02:00 674151 688240.000000 702329 674151 702329
2019-04-21 00:03:00 676713 724475.000000 772237 772237 676713
2019-04-21 00:04:00 635224 637791.500000 640359 640359 635224
2019-04-21 00:05:00 604004 604004.000000 604004 604004 604004
如果要重命名输出列,请指定<(desired_name,aggfunc)>:
格式的元组。df.groupby(pd.Grouper(freq='60s'))['Vals'].agg(
['min', 'mean', 'max', ('start', 'first'), ('end', 'last')])
min mean max start end
DateTime
2019-04-21 00:00:00 471452 790310.666667 982588 916892 471452
2019-04-21 00:01:00 460576 603865.250000 780545 460576 780545
2019-04-21 00:02:00 674151 688240.000000 702329 674151 702329
2019-04-21 00:03:00 676713 724475.000000 772237 772237 676713
2019-04-21 00:04:00 635224 637791.500000 640359 640359 635224
2019-04-21 00:05:00 604004 604004.000000 604004 604004 604004