【问题标题】:I want to slice the data in pandas based on date time我想根据日期时间对 pandas 中的数据进行切片
【发布时间】:2022-01-17 14:28:04
【问题描述】:

我正在尝试根据日期对数据进行切片。

如果我知道什么日期,我就知道如何切片。就我而言,我不会盖上日期戳。 所以根据日期,我想做切片来对数据做进一步的操作

请参考示例数据。这里的日期列可以有任何一天的日期。我想对数据进行切片。

第一个切片的日期为:20211201 第二片将是日期:20211202

我可以将列转换为日期时间格式,如下所示

df['date'] = pd.to_datetime(df['date'], format='%Y%m%d')
df = df.set_index('date')

请帮助解决这个问题

【问题讨论】:

  • 不清楚你想要什么,也提供想要的输出。
  • 正如您在我提到的问题中看到的那样:第一片将用于日期:20211201 第二片将用于日期:20211202。这是需要的。但是我可能不知道通过提及日期来切片的日期
  • 你想每个月都有单独的df吗?如果是,为什么?如果不解释(并提供示例输出)
  • @eshirvana 你的完美。但是如果不提及要切片的日期,我将不知道日期,并且日期会超过 10 年
  • 不管你的数据有多大,pandas都可以处理,你要解决的原始问题是什么?

标签: python python-3.x pandas dataframe


【解决方案1】:

这是你需要做的:

df = df[df['time'].between('9:10','9:20')].groupby('date')['Open'].max()

【讨论】:

    【解决方案2】:

    输入数据

    您使用的数据是:

    import pandas as pd
    df = pd.DataFrame({"date":[20211201,20211201,20211201,20211201,20211201,20211202,20211202,20211202,20211202],\
                        "time":["9:08","9:16","9:17","9:18","9:19","13:08","13:09","13:10","13:11"],\
                        "Open":[17104.4,17105.05,171587.75,17175.2,17168.6,17311.95,17316.5,17322.55,17325.9]})
    
    df['date'] = pd.to_datetime(df['date'], format='%Y%m%d')
    df = df.set_index('date')
    

    解决方案

    您可以按如下方式对DataFrame 进行切片:

    import datetime
    df1 = df[df.index==datetime.datetime(2021,12,1)]
    df2 = df[df.index==datetime.datetime(2021,12,2)]
    

    输出

    那么您将获得的输出是:

    >>> df1
                time       Open
    date                       
    2021-12-01  9:08   17104.40
    2021-12-01  9:16   17105.05
    2021-12-01  9:17  171587.75
    2021-12-01  9:18   17175.20
    2021-12-01  9:19   17168.60
    >>> df2
                 time      Open
    date                       
    2021-12-02  13:08  17311.95
    2021-12-02  13:09  17316.50
    2021-12-02  13:10  17322.55
    2021-12-02  13:11  17325.90
    

    【讨论】:

    • 这是我有问题的地方。在您的解决方案中,您提到了日期2021,12,1。就我而言,有很多日期(超过 10 年)。我可以为每个日期写
    • 请参阅解决方案中的更新
    猜你喜欢
    • 2018-09-26
    • 2015-10-30
    • 2017-05-21
    • 2019-11-23
    • 1970-01-01
    • 2020-03-20
    • 2021-06-04
    • 1970-01-01
    • 2014-11-09
    相关资源
    最近更新 更多