2014-02-24 56 views
6

我有如下一个大熊猫数据帧:检查,如果数据帧是布尔类型大熊猫

In [108]: df1 
Out[108]: 
         v 
t       
2014-02-21 10:30:43 False 
2014-02-21 10:31:34 False 
2014-02-21 10:32:25 False 
2014-02-21 10:33:17 False 
2014-02-21 10:34:09 False 
2014-02-21 10:35:00 False 
2014-02-21 10:35:51 False 

我需要检查,如果该数据帧的dtypebool。我试着用:

In [109]: print isinstance(df1, bool) 
False 

**它应该返回真** ****

我怎样才能做到这一点?

参考:check if variable is dataframe

+0

参考'直接dtype'。 –

+0

如何?请提供任何示例代码? – curlyreggie

回答

4

您可以打印列dtypes

In [2]: 

import pandas as pd 

df = pd.DataFrame({'a':[True,False,False]}) 
df 
Out[2]: 
     a 
0 True 
1 False 
2 False 

[3 rows x 1 columns] 

In [3]: 

df.dtypes 

Out[3]: 
a bool 
dtype: object 
In [4]: 

df.a.dtypes 
Out[4]: 
dtype('bool') 

所以你的情况df1.v.dtypes应打印相同的输出如上

另外要注意的是isinstance(df, bool)将无法正常工作,因为它是熊猫数据帧或更精确:

In [7]: 

type(df) 
Out[7]: 
pandas.core.frame.DataFrame 

需要注意的重要一点是,dtypes事实上是一个numpy.dtype你可以做到这一点来比较字符串类型的名字,但我认为isinstance在我看来更清晰,最好:

In [13]: 

df.a.dtypes.name == 'bool' 
Out[13]: 
True 
+0

这就是我所做的。我需要检查'df.a.dtypes == bool'。我怎样才能做到这一点? – curlyreggie

+0

好的。我必须这样做:'如果df1.v.dtype =='布尔':'检查它是否是一个布尔值DataFrame。谢谢! – curlyreggie

+1

@curlyreggie'dytpes'实际上是一个'numpy.dtype'参见:http://docs.scipy.org/doc/numpy/reference/generated/numpy.dtype.html,你也可以做'df.a. dtypes.name =='bool''会产生'True' – EdChum