2017-11-16 3 views
0

팬ダ 데이터 프레임에 관해서는 공허에 관해서는 무언가를 이해해서는 안됩니다. 빈 행이있는 DF가 있지만이 행 중 하나를 분리하면 비어 있지 않습니다. '2'빈 DataFrame이 비어 있음을 인정하지 않습니다.

>>> df = pandas.DataFrame(columns=[1,2,3], data=[[1,2,3],[1,None,3],[None, None, None],[3,2,1],[4,5,6],[None,None,None],[None,None,None]]) 
>>> df 
    1 2 3 
0 1.0 2.0 3.0 
1 1.0 NaN 3.0 
2 NaN NaN NaN 
3 3.0 2.0 1.0 
4 4.0 5.0 6.0 
5 NaN NaN NaN 
6 NaN NaN NaN 

가 그럼 난 줄 알고 그래서 그 확인 아무것도 가득 ...

>>> df[2:3].empty 
    False 

홀수 :

여기에 내가 dataframe을했습니다. 나는 당신이 찾고있는 생각 (? 행의 모든 ​​요소가 없음 또는 NaN이되는 없음) 공허함에 대한

http://pandas.pydata.org/pandas-docs/version/0.18/generated/pandas.DataFrame.empty.html

+3

비어 있음은 길이가 0임을 의미하며 모든 * nans가 없음을 의미합니다. –

+0

pandas.pydata.org/pandas-docs/version/0.18/generated/... 웹 사이트 예제를 확인하면 그들은 이미 해결책 – Wen

답변

2

당신은 오해하고있는 무엇 empty입니다. 시리즈/데이터 프레임의 크기가 0보다 크다는 것을 의미합니다. 이는 행이 있음을 의미합니다. 예를 들어,

df.iloc[1:0] 

Empty DataFrame 
Columns: [1, 2, 3] 
Index: [] 

df.iloc[1:0].empty 
True 

것은 당신이 행이 모든 NaNs, isnull + all 사용이 있는지 확인하려는 경우 : 예를 들어

df.isnull().all(1) 

0 False 
1 False 
2  True 
3 False 
4 False 
5  True 
6  True 
dtype: bool 

을이 수행해야합니다

df[2:3].isnull().all(1).item() 
True 

슬라이스 크기가 두 줄 이상인 경우 item을 사용할 수 없습니다.

2

을 확인하려면 어떻게

>>> df1 = df[2:3] 
>>> df1 
    1 2 3 
2 NaN NaN NaN 

>>> df1.empty 
False 

: 그래서 자신의 dataframe에 그것을 밖으로 분할

In [296]: df[5:] 
Out[296]: 
    1 2 3 
5 NaN NaN NaN 
6 NaN NaN NaN 

In [297]: df[5:].isnull().all(1).all() 
Out[297]: True 

또는 더 나은 (proposed by @IanS 등) :

이런 일에 대한
In [300]: df[5:].isnull().all().all() 
Out[300]: True 
+1

'df [5 :]. isnull(). all(). all()'이 작동해야합니다. , 아니? – IanS

+1

@IanS, 감사합니다! 대답에 추가했습니다 ... – MaxU

+1

@MaxU 잘못된 위치에 게시합니다 .... 하하, 질문 아래 게시해야합니다., 죄송합니다. – Wen

1

여러분은 ofempy() 대신에 isnull()을 사용해야합니다.

import pandas 
df = pandas.DataFrame(columns=[1,2,3], data=[[1,2,3],[1,None,3],[None, None, None],[3,2,1],[4,5,6],[None,None,None],[None,None,None]]) 
df[2:3].isnull() 
1 2 3 
True True True 
+0

https://stackoverflow.com/a/47334457/ 참조 4909087 및 https://stackoverflow.com/a/47334464/4909087 –

2

결과가 비어있는 경우 당신은 당신의 선택에서 모든 null 값을 드롭 확인할 수 있습니다 : 당신이 실수로 NaN의 값을 계산하지 않으려는 경우

>>> df[5:].dropna(how='all').empty 
True 
1

것은,이

에 동일합니다
df.dropna().iloc[5:] 

당신은 라인이 dataframe에 존재하지 않는 선택

df.dropna().iloc[5:].empty 
Out[921]: True 
1

당신이 dataframe을 가지고 각 컬럼에서 NaN이 포함 된 모든 행을 삭제하려면,이

df.dropna(how='all') 

이 dataframe 또한 어떤 경우에는 하나 개의 컬럼에서 NaN이있다 것을 발견 할 수 있습니다.사용이을 (지금까지 선호되는) 당신이 dataframe의 길이를 확인할 수 있습니다 수행 한 후

df.dropna(how='any') 

(행의 수에 포함) : 당신은 이러한 경우에 전체 행을 삭제해야하는 경우

len(df) 
관련 문제