python - 如何过滤数据框以便在特定时间每天发生一次

标签 python python-3.x pandas dataframe

我的数据集有一个日期时间列,其中有一个条目代表许多天中的每个小时。 例如:

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 indexingSeries.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/

相关文章:

python - python中变量更改时退出代码块

python - object.filter() 和外键 NULL

Python While 循环与元组

python - 使用 Python 将索引设置为 csv 文件中重复行值的组

python - Azure blob - 直接存储到存档层

python - 映射路径不起作用,运行脚本 ssh 解释器 pycharm

对象上的 Python itertools 组合

python-3.x - 如何运行 chrome headless 浏览器

python - 使用 python pandas 对值的数量进行运算

python - 如何使用 pandas fillna 快速填写大量数据?