2016-08-24 2 views
3

현재 나는 다음과 같이 데이터가 :제거 NaN의 나체를 포함하는 모든 컬럼과 행과 NaN

df_all.head() 
Out[2]: 
    Unnamed: 0 Symbol  Date  Close  Weight 
0  4061  A 2016-01-13 36.515889 (0.000002) 
1  4062  AA 2016-01-14 36.351784 0.000112 
2  4063 AAC 2016-01-15 36.351784 (0.000004) 
3  4064 AAL 2016-01-19 36.590483 0.000006 
4  4065 AAMC 2016-01-20 35.934062 0.000002 

df_all.tail() 
Out[3]: 
     Unnamed: 0 Symbol Date Close Weight 
1252498 26950320 nan NaT 9.84 NaN 
1252499 26950321 nan NaT 10.26 NaN 
1252500 26950322 nan NaT 9.99 NaN 
1252501 26950323 nan NaT 9.11 NaN 
1252502 26950324 nan NaT 9.18 NaN 

df_all.dtypes 
Out[4]: 
Unnamed: 0    int64 
Symbol    object 
Date   datetime64[ns] 
Close    float64 
Weight    object 
dtype: object 

으로, 나는 유모, 무게 날짜 및 NaN를위한 냇의 기호에 값을 얻고있다 볼 수 있습니다 .

내 목표 : 나는 유모, 냇 또는 NaN이 포함 된 모든 열이있는 행을 제거하고 내가 적절한 필터를 적용 할 수있을 것 같지 않는 결과

될 수있는 새로운 df_clean을 갖고 싶어? 내가 (나뿐만 아니라이 시도하지만) 먼저 데이터 유형을 변환해야하는 경우 나는

답변

0

이 때문에, 기호 'nan'dropna() 또는 isnull()에 의해 체포되지 않습니다.

df["symbol"] = np.where(df["symbol"]=='nan',np.nan, df["symbol"]) 
df.dropna() 
+0

downvote의 이론적 설명을 듣고 싶습니다! 'nan'이 같은 행 NaT 또는 NaN에있을 때 운이 좋다는 것은 그것이 제거된다는 것을 보장하지 않습니다. – Merlin

+0

. @ Ami 기쁜 대답을 편집하셨습니다! 나는 논리에서 오류를 지적한 후에. 작성된 코드가 실패합니다. 너 시험 해봤 니? – Merlin

4

당신은

df_all.replace({'nan': None})[~pd.isnull(df_all).any(axis=1)] 

isnull 모두 NaN와 "널 (null)"값으로 NaT을 인식 때문이다 사용할 수 있습니다 모르겠습니다.

+0

는 당신에게 당신은 환영합니다 – John

+0

대단히 감사 :이 시도 당신은 np.nan

로 기호 'nan' 캐스팅해야합니다. 행운을 빕니다. –

+0

@ 존 당신이 제거해야하는 것이 NaN뿐 아니라 NaT와 Nan일지도 모른다는 제목을 더 잘 반영 할 수 있으므로 질문을 업데이트했습니다. 여기에도 작은 업데이트가 필요했습니다. –

관련 문제