如何按Pandas.DataFrame中的值过滤掉值

时间:2015-04-12 21:27:58

标签: python pandas dataframe

我要过滤的dataFrame是:

         High    Low  Close    Volume
Date                                     
2014-06-02  634.8  622.5  628.6  13149746
2014-06-03  638.7  628.2  637.5  10419625
2014-06-04  647.9  636.1  644.8  11949821
2014-06-05  649.4  642.6  647.4  10657616
2014-06-06  651.3  644.5  645.6  12497800 
2014-06-09   93.9   91.8   93.7  74876982
2014-06-10   95.0   93.6   94.2  62458587
2015-06-11   94.8   93.5   93.9  45484122

我想选择,例如从2014-06-05到当前日期(2015-06-11)。通过比较Date列中的字符串来选择最合适的方法是什么?

1 个答案:

答案 0 :(得分:2)

我将'Date'列转换为dtype datetime,以便您可以进行日期字符串比较,然后您可以执行以下操作:

In [26]:

df[(df['Date'] > '2014-06-05') & (df['Date'] < '2015-06-11')]
Out[26]:
        Date   High    Low  Close    Volume
4 2014-06-06  651.3  644.5  645.6  12497800
5 2014-06-09   93.9   91.8   93.7  74876982
6 2014-06-10   95.0   93.6   94.2  62458587

首先转换:

df['Date'] = pd.to_datetime(df['Date'])

然后布尔条件要求使用& AND运算符和括号因运算符优先级而使用。

修改

看起来您的“日期”数据实际上是索引,在这种情况下,您仍然可以执行日期时间转换,如下所示:df.index = pd.to_datetime(df.index)然后按以下方式过滤:

In [28]:

df[(df.index > '2014-06-05') & (df.index < '2015-06-11')]
Out[28]:
             High    Low  Close    Volume
Date                                     
2014-06-06  651.3  644.5  645.6  12497800
2014-06-09   93.9   91.8   93.7  74876982
2014-06-10   95.0   93.6   94.2  62458587