Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过Pandas.DataFrame中的值筛选出值_Python_Pandas_Dataframe - Fatal编程技术网

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