2016-11-12 60 views
1

我知道如何在數據幀「東風」列「A」檢查「男」值如下蟒蛇大熊貓 - 檢查字符串類型的列

df['A'].isnull().values.any() 

存在,但我怎麼能檢查一個'字符串',我的意思是任何字符串,因爲我不知道字符串文本是什麼,然後也知道它被發現在哪一行?

回答

1

如果您正在使用Python 3,你可以用一個列表理解和numpy.any

import numpy as np 

np.any([isinstance(val, str) for val in df['A']]) 

如果您正在使用Python 2,*相信的時候,你需要用即basestring更換海峽。

0

我會用矢量熊貓方法:

假設我們有以下DF:

In [116]: df = pd.DataFrame({'a':[1,2,'aaa', 3.14, 2.71], 'b':['2016-01-01', 'bbb', '2016-02-02', '2016-03-03', 'ZZZ']}) 

In [117]: df 
Out[117]: 
     a   b 
0  1 2016-01-01 
1  2   bbb 
2 aaa 2016-02-02 
3 3.14 2016-03-03 
4 2.71   ZZZ 

In [118]: df.dtypes 
Out[118]: 
a object 
b object 
dtype: object 

檢查在列字符串應該是數字

In [119]: pd.to_numeric(df.a, errors='coerce') 
Out[119]: 
0 1.00 
1 2.00 
2  NaN 
3 3.14 
4 2.71 
Name: a, dtype: float64 

In [120]: pd.to_numeric(df.a, errors='coerce').isnull() 
Out[120]: 
0 False 
1 False 
2  True 
3 False 
4 False 
Name: a, dtype: bool 

In [121]: df.loc[pd.to_numeric(df.a, errors='coerce').isnull()] 
Out[121]: 
    a   b 
2 aaa 2016-02-02 

檢查列中應該是datetime-like的字符串

In [122]: pd.to_datetime(df.b, errors='coerce') 
Out[122]: 
0 2016-01-01 
1   NaT 
2 2016-02-02 
3 2016-03-03 
4   NaT 
Name: b, dtype: datetime64[ns] 

In [123]: df.loc[pd.to_datetime(df.b, errors='coerce').isnull()] 
Out[123]: 
     a b 
1  2 bbb 
4 2.71 ZZZ