我要过滤的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列中的字符串来选择最合适的方法是什么?
答案 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