如何获取每天的最后10条记录



我有一个DataFrame,每天有96条记录,连续5天。

数据:{'value':{时间戳('2018-05-03 00:07:30'(:13.02657778,时间戳('2018-05-03 00-22:30'

数据类型:DatetimeIndex(索引列(和float64("流"列(。

我想在每天指定的小时(H(之前保存10条记录。

我只做了一天:

df.loc[df['time'] < '09:07:30'].tail(10)

您可以使用pandas.Grouper按天(或按月或其他范围(对数据进行分组(另请参阅本讨论(。

在您的情况下,使用以下内容:

df.groupby(pd.Grouper(freq='D')).tail(10)

编辑:

要获取给定小时之前的所有行,请使用df.loc[df.index.hour < H](正如simpleApp的答案中已经提出的那样(,其中H是作为整数值的小时。

所以在一行:

df.loc[df.index.hour < H].groupby(pd.Grouper(freq='D')).tail(10)

我建议按小时过滤记录,然后按日期分组。

数据设置:

import pandas as pd
start, end = '2020-10-01 01:00:00', '2021-04-30 23:30:00'
rng = pd.date_range(start, end, freq='5min')
df=pd.DataFrame(rng,columns=['DateTS'])

设置小时

noon_hour=12 # fill the hour , for filteration

结果,如果头或尾对你的数据不起作用,你需要对它进行排序

df_before_noon=df.loc[df['DateTS'].dt.hour < noon_hour] # records before noon
df_result=df_before_noon.groupby([df_before_noon['DateTS'].dt.date]).tail(10) # group by date

最新更新