반응형
특정 열에서 NaN이 있는 행을 선택하는 방법은 무엇입니까?
이 데이터 프레임이 주어지면 "Col2"가 다음과 같은 행만 선택하는 방법NaN?
df = pd.DataFrame([range(3), [0, np.NaN, 0], [0, 0, np.NaN], range(3), range(3)], columns=["Col1", "Col2", "Col3"])
다음과 같이 보입니다.
0 1 2
0 0 1 2
1 0 NaN 0
2 0 0 NaN
3 0 1 2
4 0 1 2
결과는 다음과 같습니다.
0 1 2
1 0 NaN 0
다음을 시도합니다.
df[df['Col2'].isnull()]
@qbzenker는 가장 관용적인 방법 IMO를 제공했습니다.
다음은 몇 가지 대안입니다.
In [28]: df.query('Col2 != Col2') # Using the fact that: np.nan != np.nan
Out[28]:
Col1 Col2 Col3
1 0 NaN 0.0
In [29]: df[np.isnan(df.Col2)]
Out[29]:
Col1 Col2 Col3
1 0 NaN 0.0
하나 이상의 NaN 값을 가진 행을 선택하려면 다음을 사용할 수 있습니다.isna+any에axis=1:
df[df.isna().any(axis=1)]
특정 개수의 NaN 값이 있는 행을 선택하려면 다음을 사용할 수 있습니다.isna+sum에axis=1+gt예를 들어, 다음은 적어도 2개의 NaN 값을 가진 행을 가져옵니다.
df[df.isna().sum(axis=1)>1]
검사를 특정 열로 제한하려면 먼저 열을 선택한 다음 다음을 선택합니다.
df[df[['Col1', 'Col2']].isna().any(axis=1)]
모든 NaN 값을 가진 행을 선택하려면 다음을 사용할 수 있습니다.isna+all에axis=1:
df[df.isna().all(axis=1)]
NaN 값이 없는 행을 선택하려는 경우notna+all에axis=1:
df[df.notna().all(axis=1)]
이는 다음과 같습니다.
df[df['Col1'].notna() & df['Col2'].notna() & df['Col3'].notna()]
열이 많으면 지루해질 수 있습니다.대신, 당신은 사용할 수 있습니다.functools.reduce쇠사슬로 묶은&연산자:
import functools, operator
df[functools.reduce(operator.and_, (df[i].notna() for i in df.columns))]
또는numpy.logical_and.reduce:
import numpy as np
df[np.logical_and.reduce([df[i].notna() for i in df.columns])]
다음을 사용하여 일부 열에 NaN이 없는 행을 필터링합니다.query를 사용하면 그렇게 할 수 있습니다.engine='python'매개변수:
df.query('Col2.notna()', engine='python')
또는 그것을 사용합니다.NaN!=NaN@MaxU처럼 - UA에 대한 전쟁을 중지합니다.
df.query('Col2==Col2')
언급URL : https://stackoverflow.com/questions/43831539/how-to-select-rows-with-nan-in-particular-column
반응형
'programing' 카테고리의 다른 글
| Excel 파일을 numpy 2D 어레이에 로드 (0) | 2023.06.08 |
|---|---|
| sqlalchemy의 그룹화 & 카운트 함수 (0) | 2023.06.08 |
| 형식 술어의 형식을 매개 변수의 형식에 할당할 수 있어야 하는 이유는 무엇입니까? (0) | 2023.06.08 |
| 메일 및 비밀번호를 사용하여 REST API [Firebase]를 통한 인증 (0) | 2023.06.08 |
| 패턴이 발생할 때마다 열 값을 분할하여 MySQL의 여러 행에 배치 (0) | 2023.06.08 |