데이터 프레임에서 연속 0 만 대체하여 일부 데이터를 정리하고 싶습니다.
주어진:
import pandas as pd
import numpy as np
d = [[1,np.NaN,3,4],[2,0,0,np.NaN],[3,np.NaN,0,0],[4,np.NaN,0,0]]
df = pd.DataFrame(d, columns=['a', 'b', 'c', 'd'])
df
a b c d
0 1 NaN 3 4.0
1 2 0.0 0 NaN
2 3 NaN 0 0.0
3 4 NaN 0 0.0
원하는 결과는 다음과 같아야합니다.
a b c d
0 1 NaN 3 4.0
1 2 0.0 NaN NaN
2 3 NaN NaN NaN
3 4 NaN NaN NaN
여기서 열 c & d는 영향을 받지만 열 b는 0이 1 개 (연속 0이 아님)이므로 영향을받지 않습니다.
나는이 대답으로 실험했습니다 : Pandas DataFrame 열에서 n 개 이상의 연속 값 바꾸기
올바른 선을 따라 있지만 솔루션은 내 경우에는 바람직하지 않은 주어진 열에서 첫 번째 0을 유지합니다.
우리 shift
와 함께 하자mask
df=df.mask((df.shift().eq(df)|df.eq(df.shift(-1)))&(df==0))
Out[469]:
a b c d
0 1 NaN 3.0 4.0
1 2 0.0 NaN NaN
2 3 NaN NaN NaN
3 4 NaN NaN NaN
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다