【问题标题】:Select a subset of a Data Frame based on timestamp conditions in Pandas [duplicate]根据 Pandas 中的时间戳条件选择数据框的子集 [重复]
【发布时间】:2021-06-08 10:12:22
【问题描述】:

我想在指定的时间戳范围内从我的数据框中选择行的子集。

以下是我所做的,但它似乎不起作用。我正在尝试选择发生在 01/01/2019 01:00 和 01/01/2021 01:00 之间的行子集。

谢谢!

df.loc[(df['TIMESTAMP'] == "01/01/2019 01:00"): (df['TIMESTAMP'] == "01/01/2021 01:00")]

【问题讨论】:

    标签: python pandas dataframe timestamp subset


    【解决方案1】:

    我创建了一个测试数据框:

              TIMESTAMP  Amount
    0  01/01/2019 00:00   101.0
    1  01/01/2019 01:00   102.0
    2  01/01/2019 02:00   103.0
    3  01/05/2019 01:00   104.0
    4  02/02/2020 00:00   105.0
    5  01/01/2021 00:00   106.0
    6  01/01/2021 01:00   107.0
    7  01/01/2021 02:00   108.0
    8  01/02/2021 01:00   109.0
    

    请注意,TIMESTAMP 列是 object 类型的(实际上它包含字符串)。 当您使用“/”作为分隔符时,我假设使用美国日期格式,即 mm/dd/yyyy。

    第一步是将TIMESTAMP列转换为datetime类型:

    df.TIMESTAMP = pd.to_datetime(df.TIMESTAMP)
    

    如果您现在打印 df,它将包含:

                TIMESTAMP  Amount
    0 2019-01-01 00:00:00   101.0
    1 2019-01-01 01:00:00   102.0
    2 2019-01-01 02:00:00   103.0
    3 2019-01-05 01:00:00   104.0
    4 2020-02-02 00:00:00   105.0
    5 2021-01-01 00:00:00   106.0
    6 2021-01-01 01:00:00   107.0
    7 2021-01-01 02:00:00   108.0
    8 2021-01-02 01:00:00   109.0
    

    (这是 Pandas 格式化时间戳的方式)。

    现在,要获取预期日期时间范围内的行,请运行:

    result = df.query('TIMESTAMP.between("2019-01-01 01:00", "2021-01-01 01:00")')
    

    请注意,虽然 TIMESTAMP 列现在是 datetime 类型, 您可以将日期时间指定为 字符串。

    结果是:

                TIMESTAMP  Amount
    1 2019-01-01 01:00:00   102.0
    2 2019-01-01 02:00:00   103.0
    3 2019-01-05 01:00:00   104.0
    4 2020-02-02 00:00:00   105.0
    5 2021-01-01 00:00:00   106.0
    6 2021-01-01 01:00:00   107.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      • 2022-10-14
      • 1970-01-01
      • 2021-01-25
      • 2020-12-22
      • 2022-10-14
      • 2021-03-11
      相关资源
      最近更新 更多