我知道如何在數據幀「東風」列「A」檢查「男」值如下蟒蛇大熊貓 - 檢查字符串類型的列
df['A'].isnull().values.any()
存在,但我怎麼能檢查一個'字符串',我的意思是任何字符串,因爲我不知道字符串文本是什麼,然後也知道它被發現在哪一行?
我知道如何在數據幀「東風」列「A」檢查「男」值如下蟒蛇大熊貓 - 檢查字符串類型的列
df['A'].isnull().values.any()
存在,但我怎麼能檢查一個'字符串',我的意思是任何字符串,因爲我不知道字符串文本是什麼,然後也知道它被發現在哪一行?
如果您正在使用Python 3,你可以用一個列表理解和numpy.any
import numpy as np
np.any([isinstance(val, str) for val in df['A']])
如果您正在使用Python 2,*相信的時候,你需要用即basestring更換海峽。
我會用矢量熊貓方法:
假設我們有以下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