首页 > 解决方案 > 如何将每分钟数据的表转换为每小时数据的表?

问题描述

我有一张包含分钟数据的表格。此表中缺少某些行。

import pandas as pd
df = pd.DataFrame([
("2019-02-15 17:56:00", 11, 10),
("2019-02-15 17:57:00", 22, 10),
("2019-02-15 18:00:00", 33, 20),
("2019-02-15 18:01:00", 44, 20),
("2019-02-15 18:02:00", 55, 20),
("2019-02-16 10:01:00", 66, 50),
("2019-02-16 10:02:00", 77, 50)],
columns=["date_time", "last_val", "sum_val"])

包含分钟数据的表格

我需要一张包含每小时数据的表格。列中的last_val位置将是一小时内的最后一个值。在该sum_val列中将有每小时所有值的总和。

要使结果表如下所示:

包含每小时数据的表格

标签: pythonpython-3.xpandas

解决方案


您的 groupkey 不是很容易找到,首先需要将date_timetill切片hour并转换回datetimeobject ,然后groupby使用agg

groupkey=pd.to_datetime(df.date_time.dt.strftime('%Y-%m-%d %H'))
df.groupby(groupkey).agg({'last_val':'last','sum_val':'sum'})
Out[141]: 
                     last_val  sum_val
date_time                             
2019-02-15 17:00:00        22       20
2019-02-15 18:00:00        55       60
2019-02-16 10:00:00        77      100

推荐阅读