如何过滤数据帧,以便在特定时间每天出现一次

2024-09-30 08:30:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据集有一个datetime列,在许多天中,每天每小时有一个条目。 例如:

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,

这个例子不是有序的,但正如我所说的,一天中每小时都有一个条目

例如,我想过滤这些数据的方法是以datetime2020-03-26 12:00为例。 然后,过滤器将返回以下行:

  • 2020-03-26 12:00
  • 2020-03-25 12:00
  • 2020-03-24 12:00

等等

我试过像这样的Grouper,但是没有用

我怎样才能做到这一点?多谢各位


Tags: 数据方法过滤器datetime条目例子小时有序
1条回答
网友
1楼 · 发布于 2024-09-30 08:30:19

您可以通过^{}^{}按时间过滤日期时间:

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

相关问题 更多 >

    热门问题