我有df
如下内容:
id dates values tz
1 2020-01-01 00:15:00 87.8 +01
2 2020-01-01 00:30:00 88.3 +01
3 2020-01-01 00:45:00 89.0 +01
4 2020-01-01 01:00:00 90.1 +01
5 2020-01-01 01:15:00 91.3 +01
6 2020-01-01 01:30:00 92.4 +01
7 2020-01-01 01:45:00 92.9 +01
8 2020-01-01 02:00:00 92.5 +01
9 2020-01-01 02:15:00 91.0 +01
10 2020-01-01 02:30:00 88.7 +01
11 2020-01-01 02:45:00 86.4 +01
12 2020-01-01 03:00:00 84.7 +01
我想做的是基于id
列对每4行进行合并,然后在该values
列中添加dates
值,并将时间戳记以分钟为单位分配给该值00
例:
id dates values tz
1 2020-01-01 00:15:00 87.8 +01
2 2020-01-01 00:30:00 88.3 +01
3 2020-01-01 00:45:00 89.0 +01
4 2020-01-01 01:00:00 90.1 +01
当我合并前四个值时,输出应如下所示:
id dates values tz
1 2020-01-01 01:00:00 355.2 +01 <--- (87.8+88.3+89.0+90.1 = 355.2)
并且其他行也是如此。
所需的输出:
id dates values tz
1 2020-01-01 01:00:00 355.2 +01 <--- (87.8+88.3+89.0+90.1 = 355.2)
2 2020-01-01 02:00:00 369.1 +01 <--- (91.3+92.4+92.9+91.0 = 369.1)
3 2020-01-01 03:00:00 350.8 +01 <--- (91.0+88.7+86.4+84.7 = 350.8)
如何才能做到这一点?
我认为这里可以按4
行np.arange
的长度进行聚合,按行的长度按DataFrame
聚合sum
,last
每个组的值由GroupBy.agg
:
df = df.groupby(np.arange(len(df)) // 4).agg({'dates':'last','values':'sum', 'tz':'last'})
print (df)
dates values tz
0 2020-01-01 01:00:00 355.2 1
1 2020-01-01 02:00:00 369.1 1
2 2020-01-01 03:00:00 350.8 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句