Programing

Python Pandas 명시 적으로 열을 나열하지 않고 DataFrame에서 하나 이상의 null이있는 행을 선택하는 방법은 무엇입니까?

lottogame 2020. 5. 15. 08:01
반응형

Python Pandas 명시 적으로 열을 나열하지 않고 DataFrame에서 하나 이상의 null이있는 행을 선택하는 방법은 무엇입니까?


~ 300K 행과 ~ 40 열의 데이터 프레임이 있습니다. 행에 null 값이 포함되어 있는지 확인 하고이 'null'행을 별도의 데이터 프레임에 넣어 쉽게 탐색 할 수 있습니다.

마스크를 명시 적으로 만들 수 있습니다.

mask=False
for col in df.columns: mask = mask | df[col].isnull()
dfnulls = df[mask]

또는 다음과 같은 것을 할 수 있습니다.

df.ix[df.index[(df.T == np.nan).sum() > 1]]

더 우아한 방법이 있습니까 (널이 null 인 행 찾기)?


[현대에 적응 업데이트 pandas보유하는 isnull방법으로 DataFrameS ..]

당신은 사용할 수 있습니다 isnullany귀하의 프레임에 인덱스 부울 시리즈 및 사용을 구축 :

>>> df = pd.DataFrame([range(3), [0, np.NaN, 0], [0, 0, np.NaN], range(3), range(3)])
>>> df.isnull()
       0      1      2
0  False  False  False
1  False   True  False
2  False  False   True
3  False  False  False
4  False  False  False
>>> df.isnull().any(axis=1)
0    False
1     True
2     True
3    False
4    False
dtype: bool
>>> df[df.isnull().any(axis=1)]
   0   1   2
1  0 NaN   0
2  0   0 NaN

[연령 pandas:]

isnull메소드 대신 함수 사용할 수 있습니다 .

In [56]: df = pd.DataFrame([range(3), [0, np.NaN, 0], [0, 0, np.NaN], range(3), range(3)])

In [57]: df
Out[57]: 
   0   1   2
0  0   1   2
1  0 NaN   0
2  0   0 NaN
3  0   1   2
4  0   1   2

In [58]: pd.isnull(df)
Out[58]: 
       0      1      2
0  False  False  False
1  False   True  False
2  False  False   True
3  False  False  False
4  False  False  False

In [59]: pd.isnull(df).any(axis=1)
Out[59]: 
0    False
1     True
2     True
3    False
4    False

오히려 소형으로 연결 :

In [60]: df[pd.isnull(df).any(axis=1)]
Out[60]: 
   0   1   2
1  0 NaN   0
2  0   0 NaN

nans = lambda df: df[df.isnull().any(axis=1)]

그런 다음 필요할 때마다 다음을 입력 할 수 있습니다.

nans(your_dataframe)

참고URL : https://stackoverflow.com/questions/14247586/python-pandas-how-to-select-rows-with-one-or-more-nulls-from-a-dataframe-without

반응형