2017-10-02 3 views
2

이 질문은 여러 다른 게시물에서 질문을 받았지만 작동 방법을 얻을 수 없었습니다.팬더 데이터 프레임에서 0을 삭제하십시오.

df = pd.DataFrame([[1,2,3,4.5],[1,2,0,4,5]]) 
싶습니다

내가 중 하나를 수행 할 수 있습니다 방법을 알고 : 이것은 내 dataframe입니다

1)를 포함 할 행/모두 제로 이 삭제가)를 포함 할 컬럼/모두 0 삭제

는 0을 포함하는 행을 삭제하기 위해,이 근무 :

df2 = df[~(df == 0).any(axis=1)] 
df2 = df[~(df == 0).all(axis=1)] 

그러나 나는 이것이 현명한 열을 동작하지 않습니다. axis = 0으로 설정하려고 시도했지만이 오류가 발생합니다.

__main__:1: UserWarning: Boolean Series key will be reindexed to match DataFrame index. 

의견이 있으십니까?

답변

4

당신은이에 대한 loc을 필요 해요 :

df 
    0 1 2 3 4 
0 1 2 3 4 5 
1 1 2 0 4 5 

df.loc[:, ~(df == 0).any(0)] # notice the :, this means we are indexing on the columns now, not the rows 
    0 1 3 4 
0 1 2 4 5 
1 1 2 4 5 

직접 인덱싱 기본값을 인덱싱 행에. [0, 1, 3, 4]을 사용하여 두 행만 사용하여 데이터 프레임을 인덱싱하려고하므로 pandas에서 경고합니다.

+1

데이터의 순차적 특성을 감안할 때, '4.5'대신 '4, 5'로 끝나야한다고 생각합니다. 또한,'any' 메쏘드에서 0이 필요하다고 생각하지 않습니다, 즉'any()'만이 작동해야합니다. – Alexander

+0

@Alexander heheh, 절대로 깨닫지 못했을 것입니다. 감사. –

+0

완벽한, 고마워요 Coldspeed !! –

관련 문제