2016-10-17 2 views
0

DataFrame에서 컬럼을 생성하여 내 그룹화를 기반으로합니다. NaN이 아닌 모든 NaN 열은 같은 그룹에 속한다는 것을 알고 있습니다. 그래서이 루프를 작성했지만 (cf 참조), 적용 또는 이해력 목록으로 작성하는 더 판다/파이썬 방법이 있는지 궁금합니다.다른 컬럼의 기준에 맞는 모든 인덱스에 대해 증가하는 컬럼 추가

import pandas 

>>> DF = pandas.DataFrame([134, None, None, None, 129374, None, None, 12, None], 
         columns=['Val']) 
>>> a = [0] 
>>> for i in DF['Val']: 
     if i > 1: 
      a.append(a[-1] + 1) 
     else: 
      a.append(a[-1]) 
>>> a.pop(0) # remove 1st 0 which does not correspond to any rows 
>>> DF['Group'] = a 
>>> DF 
     Val Group 
0  134.0  1 
1  NaN  1 
2  NaN  1 
3  NaN  1 
4 129374.0  2 
5  NaN  2 
6  NaN  2 
7  12.0  3 
8  NaN  3 

답변

2

비 NaN 값을 식별하려면 pd.notnull을 사용하십시오.

import pandas as pd 

df = pd.DataFrame([134, None, None, None, 129374, None, None, 12, None], 
        columns=['Val']) 
df['Group'] = pd.notnull(df['Val']).cumsum() 
print(df) 

 Val Group 
0  134.0  1 
1  NaN  1 
2  NaN  1 
3  NaN  1 
4 129374.0  2 
5  NaN  2 
6  NaN  2 
7  12.0  3 
8  NaN  3 
을 산출 : 그런 다음 Group 열을 만들 cumsum를 사용
관련 문제