답변:
업데이트 : Pandas 0.22.0 사용
최신 Pandas 버전에는 새로운 메소드 'DataFrame.isna ()' 및 'DataFrame.notna ()'가 있습니다.
In [71]: df
Out[71]:
a b c
0 NaN 7.0 0
1 0.0 NaN 4
2 2.0 NaN 4
3 1.0 7.0 0
4 1.0 3.0 9
5 7.0 4.0 9
6 2.0 6.0 9
7 9.0 6.0 4
8 3.0 0.0 9
9 9.0 0.0 1
In [72]: df.isna().any()
Out[72]:
a True
b True
c False
dtype: bool
열 목록으로 :
In [74]: df.columns[df.isna().any()].tolist()
Out[74]: ['a', 'b']
해당 열을 선택하려면 (적어도 하나의 NaN
값 포함) :
In [73]: df.loc[:, df.isna().any()]
Out[73]:
a b
0 NaN 7.0
1 0.0 NaN
2 2.0 NaN
3 1.0 7.0
4 1.0 3.0
5 7.0 4.0
6 2.0 6.0
7 9.0 6.0
8 3.0 0.0
9 9.0 0.0
이전 답변 :
isnull ()을 사용해보십시오 :
In [97]: df
Out[97]:
a b c
0 NaN 7.0 0
1 0.0 NaN 4
2 2.0 NaN 4
3 1.0 7.0 0
4 1.0 3.0 9
5 7.0 4.0 9
6 2.0 6.0 9
7 9.0 6.0 4
8 3.0 0.0 9
9 9.0 0.0 1
In [98]: pd.isnull(df).sum() > 0
Out[98]:
a True
b True
c False
dtype: bool
또는 @root가 더 명확한 버전을 제안한 것처럼 :
In [5]: df.isnull().any()
Out[5]:
a True
b True
c False
dtype: bool
In [7]: df.columns[df.isnull().any()].tolist()
Out[7]: ['a', 'b']
하위 집합을 선택하려면-하나 이상의 NaN
값을 포함하는 모든 열 :
In [31]: df.loc[:, df.isnull().any()]
Out[31]:
a b
0 NaN 7.0
1 0.0 NaN
2 2.0 NaN
3 1.0 7.0
4 1.0 3.0
5 7.0 4.0
6 2.0 6.0
7 9.0 6.0
8 3.0 0.0
9 9.0 0.0
df.columns[df.isin['xxx'].any()].tolist()
df.columns[df.eq(search_for_value).any()].tolist()
isna
, notna
?
많은 수의 열이있는 데이터 집합에서 null 값을 포함하는 열 수와 그렇지 않은 열 수를 확인하는 것이 좋습니다.
print("No. of columns containing null values")
print(len(df.columns[df.isna().any()]))
print("No. of columns not containing null values")
print(len(df.columns[df.notna().all()]))
print("Total no. of columns in the dataframe")
print(len(df.columns))
예를 들어 내 데이터 프레임에는 82 개의 열이 있었고 그 중 19 개에는 적어도 하나의 null 값이 포함되었습니다.
또한 null 값이 더 많은 열에 따라 열과 행을 자동으로 제거 할 수도 있습니다
. 지능적으로 수행하는 코드는 다음과 같습니다.
df = df.drop(df.columns[df.isna().sum()>len(df.columns)],axis = 1)
df = df.dropna(axis = 0).reset_index(drop=True)
참고 : 위의 코드는 모든 null 값을 제거합니다. 널값을 원하면 이전에 처리하십시오.
이것은 나를 위해 일했다.
1. null 값이 1 이상인 열을 가져옵니다. (열 이름)
data.columns[data.isnull().any()]
2. 적어도 1 개의 null 값을 가진 개수로 열을 가져 오는 경우.
data[data.columns[data.isnull().any()]].isnull().sum()
[선택 사항] 3. null 개수의 백분율을 가져옵니다.
data[data.columns[data.isnull().any()]].isnull().sum() * 100 / data.shape[0]
df.isna().any()[lambda x: x]
나를 위해 작동