【问题标题】:Query pandas datetime and filtering between current date, upper & lower timedelta查询 pandas 日期时间并在当前日期、上限和下限 timedelta 之间进行过滤
【发布时间】:2021-06-05 13:47:07
【问题描述】:

我有一个数据框(日期时间),其中包含 2021 年潮汐站的潮汐预测

1:我想根据当前日期{tday}查询 2:还可以过滤一系列日期; {tday} 之前 2 天 之后 2 天

我应该怎么做?

code and df query atempt

【问题讨论】:

  • 能否将示例数据和代码添加为文本而不是图像?这使得提出有用的解决方案变得更加容易。
  • 欢迎来到 Stack Overflow!如果您还没有这样做,请花一些时间查看要做什么when someone answers your question。访问help center,可以找到有关 Stack Overflow 新用户的更多信息。
  • 我的解决方案有帮助吗?

标签: python pandas datetime filtering


【解决方案1】:

这样的事情怎么样?此外,今后,学习如何提供格式正确的reproducible example 将使您受益匪浅。

from faker import Faker
from itertools import cycle
import pandas as pd
import random
fake = Faker()

#Create fake sample data

tides = cycle(['LW', 'HW'])


def create_rows_faker(num=1):
    output = [{
        "date_time":fake.date_time_between('-5d', 'now'),
        "tide":next(tides),
        "cm_NAP":random.randint(1000,2000)} for x in range(num)]
    return output


df_faker = pd.DataFrame(create_rows_faker(20))

print(df_faker.sort_values(by='date_time'))

             date_time   tide  cm_NAP
16 2021-03-02 16:47:11   LW    1146
14 2021-03-02 22:07:55   LW    1766
1  2021-03-03 00:08:37   HW    1242
7  2021-03-03 03:47:00   HW    1938
10 2021-03-03 20:24:51   LW    1910
8  2021-03-04 19:31:21   LW    1479
3  2021-03-04 19:53:18   HW    1079
13 2021-03-04 20:53:41   HW    1589
0  2021-03-05 22:14:16   LW    1093
15 2021-03-05 23:27:34   HW    1786
19 2021-03-06 00:08:59   HW    1034
17 2021-03-06 02:28:37   HW    1698
5  2021-03-06 04:39:14   HW    1922
4  2021-03-06 07:06:48   LW    1323
18 2021-03-06 07:48:38   LW    1445
9  2021-03-06 10:21:43   HW    1142
6  2021-03-07 02:01:23   LW    1209
11 2021-03-07 02:04:30   HW    1124
12 2021-03-07 06:35:49   LW    1538
2  2021-03-07 06:56:26   LW    1552


# Filter for today's date

print(df_faker[(df_faker['date_time'] > '2021-03-07 00:00:00')])

             date_time   tide  cm_NAP
2  2021-03-07 06:56:26   LW    1552
6  2021-03-07 02:01:23   LW    1209
11 2021-03-07 02:04:30   HW    1124
12 2021-03-07 06:35:49   LW    1538
# filter for 2 days before and 2 days after some arbitrary date range

print(df_faker[(df_faker['date_time'] > '2021-03-05 00:00:00') & (df_faker['date_time'] < '2021-03-07 08:00:00')])

             date_time   tide  cm_NAP
0  2021-03-05 22:14:16   LW    1093
2  2021-03-07 06:56:26   LW    1552
4  2021-03-06 07:06:48   LW    1323
5  2021-03-06 04:39:14   HW    1922
6  2021-03-07 02:01:23   LW    1209
9  2021-03-06 10:21:43   HW    1142
11 2021-03-07 02:04:30   HW    1124
12 2021-03-07 06:35:49   LW    1538
15 2021-03-05 23:27:34   HW    1786
17 2021-03-06 02:28:37   HW    1698
18 2021-03-06 07:48:38   LW    1445
19 2021-03-06 00:08:59   HW    1034

【讨论】:

    猜你喜欢
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 2015-04-16
    • 2021-12-17
    相关资源
    最近更新 更多