【问题标题】:How do I drop rows in a pandas dataframe based on the time of day如何根据一天中的时间在熊猫数据框中删除行
【发布时间】:2021-12-21 18:50:24
【问题描述】:

我正在尝试删除数据框中的特定行,其中索引是一天中特定时间间隔为 1 小时的日期。 (它是股市数据的每小时间隔)。

例如,2021-10-26 09:30:00-4:00,2021-10-26 10:30:00-4:00,2021-10-26 11:30:00-4:00 , 2021-10-26 12:30:00-4:00 等

我希望能够通过 hh:mm 指定要保留的行(例如,仅保留每天 6:30、10:30 的数据),并删除所有其余的。

我对编程很陌生,所以完全不知道该怎么做。

【问题讨论】:

    标签: python pandas datetime rows drop


    【解决方案1】:

    如果你的列是日期时间对象而不是字符串,你可以这样做

    df = pd.Dataframe()
    ...input data, etc...
    columns = df.columns
    kept = []
    for col in columns
        if (col.dt.hour == 6 or col.dt.hour == 10) and col.dt.minute == 30 
            kept.append(col)
        else:
            continue
    df = df[kept]
    

    在此处查看有关在 pandas 中处理时间的信息大约一半

    https://www.dataquest.io/blog/python-datetime-tutorial/

    【讨论】:

    • 嗨肖恩,我试图让你的解决方案工作,但不能(我真的是一个新手!)但我确实通过将日期时间格式转换为字符串,然后使用 str .contains 只保留我想要的时间。我没有将日期用于任何事情,因此将它们转换为字符串并不重要:我的数据框称为“数据”,带有日期的列是“日期”。 10:30 和 14:30 的行是我想保留的行。谢谢! data['Date'] = data['Date'].dt.strftime("%Y-%m-%d %H:%M") data[(data['Date'].str.contains('10 :30')) | (data['Date'].str.contains('14:30'))]
    • 这也有效,同样的想法!
    猜你喜欢
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2016-09-05
    • 2015-10-15
    • 2021-12-02
    • 2017-10-04
    • 2020-03-05
    相关资源
    最近更新 更多