2

我的数据框的索引每 3 分钟间隔一次:

Timestamp                value
2019-06-30 07:00:00    0.065248
2019-06-30 07:03:00    0.067896
2019-06-30 07:06:00    0.070529
2019-06-30 07:09:00    0.073034
2019-06-30 07:12:00    0.085928
                         ...   
2019-06-30 16:48:00    0.246681
2019-06-30 16:51:00    0.246745
2019-06-30 16:54:00    0.247110
2019-06-30 16:57:00    0.247174
2019-06-30 17:00:00    0.246338

我需要为线图选择每一小时。

我愚蠢的解决方案是:

hour_ls = ['2019-06-30 07:00:00', '2019-06-30 08:00:00','2019-06-30 09:00:00','2019-06-30 10:00:00',
           '2019-06-30 11:00:00','2019-06-30 12:00:00','2019-06-30 13:00:00','2019-06-30 14:00:00',
           '2019-06-30 13:00:00','2019-06-30 16:00:00','2019-06-30 17:00:00']

hour_ls = [pd.to_datetime(i) for i in hour_ls]
df.loc[hour_ls]

是否有 pythonic\pandeic 为什么要干净地这样做?

4

2 回答 2

3

您可以使用floor查找小时数,然后检查索引是否等于小时:

df[df.index == df.index.floor('H')]
于 2020-04-16T18:51:13.900 回答
0

将列转换为日期时间元素后您现在可以访问 datetime.minute。示例:假设您有一个如上所述的数据框 df :

df['Timestamp'] = pd.to_datetime(df['Timestamp'])
hourly_entries = pd.DataFrame([el for el in df['Timestamp'] if el.minute == 0])

这将创建一个名为“hourly_entries”的新 DataFrame,其中包含 datetime.minute == 0 的所有元素。

于 2020-04-16T19:07:16.547 回答