반응형
ix 또는 iloc을 사용하여 panda DataFrame에서 특정 값(셀 내)이 NaN인지 확인
내게 다음이 있다고 치자.pandas
DataFrame
:
import pandas as pd
df = pd.DataFrame({"A":[1,pd.np.nan,2], "B":[5,6,0]})
다음과 같이 보입니다.
>>> df
A B
0 1.0 5
1 NaN 6
2 2.0 0
첫번째 옵션
특정 값이 다음 값인지 확인할 수 있는 한 가지 방법을 알고 있습니다.NaN
, 다음과 같습니다.
>>> df.isnull().ix[1,0]
True
두 번째 옵션(작동하지 않음)
나는 아래 옵션을 생각했다, 사용.ix
, 효과는 있겠지만 그렇지는 않습니다.
>>> df.ix[1,0]==pd.np.nan
False
저도 노력했습니다.iloc
동일한 결과:
>>> df.iloc[1,0]==pd.np.nan
False
그러나 다음을 사용하여 해당 값을 확인하면ix
아니면iloc
알겠습니다.
>>> df.ix[1,0]
nan
>>> df.iloc[1,0]
nan
그렇다면 두 번째 옵션은 왜 작동하지 않는 것일까요?확인이 가능한가요?NaN
값 사용ix
아니면iloc
?
시도해 보기:
In [107]: pd.isnull(df.iloc[1,0])
Out[107]: True
업데이트: 최신 Pandas 버전에서는 pd.isna():
In [7]: pd.isna(df.iloc[1,0])
Out[7]: True
위의 답변은 훌륭합니다.더 나은 이해를 위한 예시도 마찬가지입니다.
>>> import pandas as pd
>>>
>>> import numpy as np
>>>
>>> pd.Series([np.nan, 34, 56])
0 NaN
1 34.0
2 56.0
dtype: float64
>>>
>>> s = pd.Series([np.nan, 34, 56])
>>> pd.isnull(s[0])
True
>>>
저도 몇 번 시도했지만, 그 다음 시도는 효과가 없었습니다.덕분에.@MaxU
.
>>> s[0]
nan
>>>
>>> s[0] == np.nan
False
>>>
>>> s[0] is np.nan
False
>>>
>>> s[0] == 'nan'
False
>>>
>>> s[0] == pd.np.nan
False
>>>
pd.isna(cell_value)
주어진 셀 값이 nan인지 확인하는 데 사용될 수 있습니다.아니면.pd.notna(cell_value)
그 반대를 확인하기 위해서 입니다.
팬더의 소스 코드:
def isna(obj):
"""
Detect missing values for an array-like object.
This function takes a scalar or array-like object and indicates
whether values are missing (``NaN`` in numeric arrays, ``None`` or ``NaN``
in object arrays, ``NaT`` in datetimelike).
Parameters
----------
obj : scalar or array-like
Object to check for null or missing values.
Returns
-------
bool or array-like of bool
For scalar input, returns a scalar boolean.
For array input, returns an array of boolean indicating whether each
corresponding element is missing.
See Also
--------
notna : Boolean inverse of pandas.isna.
Series.isna : Detect missing values in a Series.
DataFrame.isna : Detect missing values in a DataFrame.
Index.isna : Detect missing values in an Index.
Examples
--------
Scalar arguments (including strings) result in a scalar boolean.
>>> pd.isna('dog')
False
>>> pd.isna(np.nan)
True
df.isnull().loc[1,0]
위의 구문을 시도해 보았는데 효과가 있었습니다.
저는 몇 가지 해결책을 마련했습니다.
x = [np.nan]
In [4]: x[0] == np.nan
Out[4]: False
그러나:
In [5]: np.nan in x
Out[5]: True
method 구현 목록을 볼 수 있으므로 method 구현이 작동하는 이유를 파악할 수 있습니다.
언급URL : https://stackoverflow.com/questions/47440077/checking-if-particular-value-in-cell-is-nan-in-pandas-dataframe-not-working-us
반응형
'programing' 카테고리의 다른 글
웹 브라우저에서 온블러와 포커스 아웃의 차이점은 무엇입니까? (0) | 2023.10.30 |
---|---|
C++에서 안전 중요 소프트웨어를 위한 공식 방법 (0) | 2023.10.30 |
WordPress Permalinks가 작동하지 않습니다. (0) | 2023.10.25 |
Powershell: $profile이 찾을 수 없는 경로를 가리키며 영구 경로를 설정하고 있습니다. (0) | 2023.10.25 |
이렇게 $.ajax ( serialize() + extra data)로 데이터를 추가하는 방법 (0) | 2023.10.25 |