내 numpy 배열은 np.nan
누락 된 값을 지정 하는 데 사용 합니다. 데이터 세트를 반복하면서 이러한 누락 된 값을 감지하고 특수한 방식으로 처리해야합니다.
에서 지원하는 유형의 하위 집합이 아닌 numpy.isnan(val)
한 잘 작동 val
하는 numpy.isnan()
. 예를 들어 문자열 필드에서 누락 된 데이터가 발생할 수 있으며이 경우 다음과 같은 결과가 발생합니다.
>>> np.isnan('some_string')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Not implemented for this type
예외를 잡아서 반환하는 값 비싼 래퍼를 작성하는 것 외에 False
이것을 우아하고 효율적으로 처리하는 방법이 있습니까?
답변
pandas.isnull()
(또한 pd.isna()
최신 버전에서) 숫자 및 문자열 / 객체 배열 모두에서 누락 된 값을 확인합니다. 문서에서 다음을 확인합니다.
숫자 형 배열의 NaN, 객체 배열의 None / NaN
빠른 예 :
import pandas as pd
import numpy as np
s = pd.Series(['apple', np.nan, 'banana'])
pd.isnull(s)
Out[9]:
0 False
1 True
2 False
dtype: bool
결 numpy.nan
측값을 표현하기 위해 사용한다는 아이디어는 pandas
도입 된 pandas
것이므로이를 처리 할 도구가 있습니다.
Datetimes도 (사용 pd.NaT
하는 경우 dtype을 지정할 필요가 없습니다)
In [24]: s = Series([Timestamp('20130101'),np.nan,Timestamp('20130102 9:30')],dtype='M8[ns]')
In [25]: s
Out[25]:
0 2013-01-01 00:00:00
1 NaT
2 2013-01-02 09:30:00
dtype: datetime64[ns]``
In [26]: pd.isnull(s)
Out[26]:
0 False
1 True
2 False
dtype: bool
답변
당신의 유형은 정말 임의적입니까? int float 또는 string이 될 것이라는 것을 알고 있다면 그냥 할 수 있습니다.
if val.dtype == float and np.isnan(val):
numpy로 래핑되었다고 가정하면 항상 dtype을 가지며 float 및 complex 만 NaN 일 수 있습니다.