我有一个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