【问题标题】:Date filter problems (python)日期过滤器问题(python)
【发布时间】:2021-11-28 10:31:12
【问题描述】:

我在从我的数据框中过滤特定时期的日期时遇到了一些问题。

例如我需要 2014 年 9 月 14 日至 2020 年 9 月 30 日之间的日期。为此,我使用了

df = df.loc[(df['date'] >= '14/09/2014') and (df['date'] <= '30/08/2020')](值错误)以及

df = df.loc['14/09/2014':'30/08/2020'] --> 哪种有效,但它也显示了超出特定范围的日期(例如 12/09/1965)。

有关其他信息:我将日期列('edate')设置为索引列,请参见以下代码:

df = pd.read_csv('https://manifestoproject.wzb.eu/down/data/2020b/datasets/MPDataset_MPDS2020b.csv', parse_dates=['date'], index_col='edate')

另外,我使用 dtale 通过 localhost 显示结果。

有人可以解释为什么它显示超出范围的更多日期(使用 14/09/2014:30/08/2020 的代码时)?另外,如果有人能为我的问题提供解决方案,我将不胜感激!

最好的问候

【问题讨论】:

    标签: python python-3.x pandas jupyter-notebook


    【解决方案1】:

    有 2 个问题 - 按位使用 and & 和按日期时间比较是必需的格式 YYYY-MM-DD

    df = df[(df['date'] >= '2014-09-14') &(df['date'] <= '2020-08-30')]
    

    检查数据:

    #original data
    print (len(df))
    4656
    
    #only changed and to &
    df1 = df.loc[(df['date'] >= '14/09/2014') & (df['date'] <= '30/08/2020')]
    print (len(df1))
    4656
    
    # changed and to & and format YYYY-MM-DD
    df1 = df[(df['date'] >= '2014-09-14') &(df['date'] <= '2020-08-30')]
    print (len(df1))
    585
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-28
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      相关资源
      最近更新 更多