我的数据集有一个日期时间列,其中有一个条目代表许多天中的每个小时。 例如:
123412,2020-03-26 12:00,
123412,2020-03-27 12:00,
123412,2020-03-27 09:00,
123412,2020-03-27 09:00,
123412,2020-03-27 15:00,
123412,2020-03-26 15:00,
123412,2020-03-27 11:00,
123412,2020-03-27 12:00,
示例没有排序,但正如我所说,一天中的每个小时都有一个条目。
我想过滤这个数据的方法是,例如,取日期时间2020-03-26 12:00
。
然后,过滤器将返回以下行:
- 2020-03-26 12:00
- 2020-03-25 12:00
- 2020-03-24 12:00
等等
我试过这样的 Grouper
df2 = df2.groupby(pd.Grouper(key=DATETIME, freq='D'))
但那没有不工作。
我怎样才能做到这一点?谢谢
最佳答案
您可以按时间过滤日期时间 boolean indexing
和 Series.dt.time
:
print (df)
a date b
0 123412 2020-03-26 12:00:00 NaN
1 123412 2020-03-27 12:00:00 NaN
2 123412 2020-03-27 09:00:00 NaN
3 123412 2020-03-27 09:00:00 NaN
4 123412 2020-03-27 15:00:00 NaN
5 123412 2020-03-26 15:00:00 NaN
6 123412 2020-03-27 11:00:00 NaN
7 123412 2020-03-27 12:00:00 NaN
d = '2020-03-26 12:00'
df = df[df['date'].dt.time.eq(pd.Timestamp(d).time())]
print (df)
a date b
0 123412 2020-03-26 12:00:00 NaN
1 123412 2020-03-27 12:00:00 NaN
7 123412 2020-03-27 12:00:00 NaN
如果只需要唯一的日期时间:
d = '2020-03-26 12:00'
df = df.drop_duplicates('date')
df = df[df['date'].dt.time.eq(pd.Timestamp(d).time())]
print (df)
a date b
0 123412 2020-03-26 12:00:00 NaN
1 123412 2020-03-27 12:00:00 NaN
关于python - 如何过滤数据框以便在特定时间每天发生一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61026201/