2017-12-11 5 views
1

을 수 :다시 발생 내가 다음과 같은 dataframe이

 Col1  Col2 
0  C  NaN 
1  A   2 
3  D  NaN 
4  A   1 
5  A  NaN 
:

 Col1  
0  C   
1  A   
3  D   
4  A   
5  A 

내가 특정 값 것이라는 단계/인덱스 계산 싶습니다 재 - 발생 그래서 나는 다음을 얻을 것

어떻게 할 지에 대한 아이디어가 있으십니까? 도와 주셔서 감사합니다 !

답변

4

사용 GroupBy.cumcount 다음 0NaN로의 대체 :

df['Col2'] = df.groupby('Col1').cumcount(ascending=False).replace(0,np.nan) 
print (df) 
    Col1 Col2 
0 C NaN 
1 A 2.0 
3 D NaN 
4 A 1.0 
5 A NaN 

대체 솔루션 mask과 :

df['Col2'] = df.groupby('Col1').cumcount(ascending=False).mask(lambda x: x == 0)