Python 如何通过Pandas.DataFrame中的值筛选出值
我要筛选的数据帧是:Python 如何通过Pandas.DataFrame中的值筛选出值,python,pandas,dataframe,Python,Pandas,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
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)。通过比较日期列中的字符串,最合适的选择方法是什么?我将“日期”列转换为数据类型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
然后,布尔条件要求对和
使用&
运算符,并且由于运算符的优先级,需要使用括号
编辑
看起来您的“日期”数据实际上是索引,在这种情况下,您仍然可以执行datetime转换,如下所示: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
[28]中的
df[(df.index>'2014-06-05')和(df.index<'2015-06-11')]
出[28]:
高低收盘量
日期
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
日期是一列还是索引?我是这个框架的绝对初学者。我没有使用set_索引('Date'),所以我相信它是一列。顺便说一句,当我尝试调用set_index('Date')时失败,解释器抱怨KeyError:'Date'什么是df.columns
output,这将告诉您它是否是一个列,这很重要,因为列和索引值之间的过滤方法不同感谢您的快速回复。我得到了这个索引([u'Open',u'High',u'Low',u'Close',u'Volume'],dtype='object')这意味着'Date'是索引,这是你想要的还是不想要的?如果希望将日期作为列,可以调用reset\u 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