【问题标题】:filtering a pandas Dataframe based on date value根据日期值过滤熊猫数据框
【发布时间】:2013-06-09 00:24:33
【问题描述】:

我使用 pandas read_csv 从 csv 文件导入以下数据:

 instrument         type   from_date  to_date   
0   96000001    W/D & V/L  19951227  19960102
1   96000002   DEED TRUST  19951227  19960102
2   96000003  WARNTY DEED  19951228  19960102
3   96000004   DEED TRUST  19951228  19960102
4   96000005    W/D & V/L  19951228  19960102

我想选择那些适合日期或日期范围的行。例如我想 在from_date 列中仅选择日期为19951227 的那些行,或选择从19951227from_dateto_date 19960102 的日期。

我该怎么做?

【问题讨论】:

    标签: date pandas


    【解决方案1】:

    选择具有特定列的那些:

    In [11]: df[df['from_date'] == 19951227]
    Out[11]:
       instrument        type  from_date   to_date
    0    96000001   W/D & V/L   19951227  19960102
    1    96000002  DEED TRUST   19951227  19960102
    

    或者组合几个查询(你可以使用| for or)

    In [12]: df[(19951227 <= df['from_date']) & (df['to_date'] <= 19960102)]
    Out[12]:
       instrument         type  from_date   to_date
    0    96000001    W/D & V/L   19951227  19960102
    1    96000002   DEED TRUST   19951227  19960102
    2    96000003  WARNTY DEED   19951228  19960102
    3    96000004   DEED TRUST   19951228  19960102
    4    96000005    W/D & V/L   19951228  19960102
    

    值得注意的是,这些列不是日期时间/时间戳对象...

    要将这些列转换为您可以使用的时间戳:

    In [21]: pd.to_datetime(df['from_date'].astype(str))
    Out[21]:
    0   1995-12-27 00:00:00
    1   1995-12-27 00:00:00
    2   1995-12-28 00:00:00
    3   1995-12-28 00:00:00
    4   1995-12-28 00:00:00
    Name: from_date, dtype: datetime64[ns]
    
    In [22]: df['from_date'] = pd.to_datetime(df['from_date'].astype(str))
    
    In [23]: pd.to_datetime(df['from_date'].astype(str))  # do same for to_date
    

    并通过日期的字符串表示查询:

    In [24]: df['1995-12-27' == df['from_date']]
    Out[24]:
       instrument        type           from_date   to_date
    0    96000001   W/D & V/L 1995-12-27 00:00:00  19960102
    1    96000002  DEED TRUST 1995-12-27 00:00:00  19960102
    

    【讨论】:

    • 安迪·海登,西部最快的枪。
    • 怎么样 df['1995-12-27' >= df['from_date'] & df['1997-12-27'
    猜你喜欢
    • 2020-05-05
    • 2021-08-19
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    相关资源
    最近更新 更多