【问题标题】:Filtering DataFrame by condition on date index按日期索引上的条件过滤 DataFrame
【发布时间】:2018-05-18 14:14:55
【问题描述】:

我有一个使用 frame['date_created'].value_counts().sort_index() 值的熊猫系列

2013-10     1
2014-12     1
2015-02     1
2015-03     1
2015-09     1
2016-02     6
2016-03     1
2017-05     5
2017-07     2
2017-08    13
2017-09    40
2017-10    47
2017-11    40
2017-12    26
2018-01    16

但我想过滤这个系列以获取日期为 2017 年及以上的数据。如何过滤?

【问题讨论】:

    标签: python pandas date datetime dataframe


    【解决方案1】:

    str[...]切片

    直截了当,如果您正在处理字符串索引,那么切片、强制转换和比较:

    v = frame['date_created'].value_counts().sort_index()
    v_2017 = v[v.index.str[:4].astype(int) >= 2017]
    

    print(v_2017)
    
    2017-05     5
    2017-07     2
    2017-08    13
    2017-09    40
    2017-10    47
    2017-11    40
    2017-12    26
    2018-01    16
    Name: 1, dtype: int64
    

    pd.to_datetime

    或者,强制转换为日期时间——

    v_2017 = v[pd.to_datetime(v.index).year >= 2017]
    print(v_2017)
    
    2017-05     5
    2017-07     2
    2017-08    13
    2017-09    40
    2017-10    47
    2017-11    40
    2017-12    26
    2018-01    16
    Name: 1, dtype: int64
    

    【讨论】:

      【解决方案2】:

      这是一种方法:

      import pandas as pd
      
      df = pd.DataFrame({'date_created': ['2013-10','2014-12',
                                          '2015-02','2015-03',
                                          '2015-09','2016-02',
                                          '2016-03','2017-05',
                                          '2017-07','2017-08',
                                          '2017-09','2017-10',
                                          '2017-11','2017-12',
                                          '2018-01'],
                          'count': [1, 1, 1, 1, 1, 6, 1, 5, 2, 13, 40, 47, 40, 26, 16]})
      
      print(df[df['date_created'].apply(lambda x: int(x.split('-')[0])).gt(2016)])
      #    count date_created
      #7       5      2017-05
      #8       2      2017-07
      #9      13      2017-08
      #10     40      2017-09
      #11     47      2017-10
      #12     40      2017-11
      #13     26      2017-12
      #14     16      2018-01
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-18
        • 2022-10-24
        • 2013-12-12
        • 2021-10-30
        • 2021-01-20
        相关资源
        最近更新 更多