2017-09-15 8 views
2

데이터를 여러 대상 열로 녹일 데이터 프레임이 있습니다. 아래의 코드는 내가다른 열의 여러 열과 열에 데이터를 녹이는 Python 팬더

grp2 = pd.lreshape(grp1, cols.groupby(cols.str.split('_').str[1])).sort_values('ACCT_NAME') 

는 위의 라인은 내가 열 이름을 잃게 사용

grp2 = pd.melt(grp1 , id_vars = ['Client' , 'Industry'] , var_name = "H Year" , value_name = 'Count') 

내가 여러 목표 컬럼 DF

에서

Client INDUSTRY 1H2016_6MO 2H2016_6MO 1H2017_6MO 2H2017_6MO 1H2016_12MO 2H2016_12MO 1H2017_12MO 2H2017_12MO 

XXX  AAA   1   0   0   0   1   1   0   0 

YYY  BBB   0   0   1   0   0   0   0   1 
ZZZ  CCC   1   1   0   0   0   0   1   1 

XXX  AAA   1   0   0   0   1   1   0   0 
을 얻을 그나마 위의 라인

Client INDUSTRY Year_Half 6MO 12MO 
XXX  AAA   1H2016  2 2 
XXX  AAA   2H2016  0 2 
XXX  AAA   1H2017  0 0 
XXX  AAA   2H2017  0 0 
YYY  BBB   1H2016  0 0 
YYY  BBB   2H2016  0 0 
YYY  BBB   1H2017  1 0 
YYY  BBB   2H2017  0 1 
ZZZ CCC 1H2016 1 0 
ZZZ CCC 2H2016 1 0 
ZZZ CCC 1H2017 0 1 
ZZZ CCC 2H2017 0 1 

이에 대한 해결책에 알려 주시기 바랍니다 DF합니다. 나는 다른 질문을 본 적이 있지만 별도의 열

에 열 이름을 해달라고

답변

2

사용 : 별도의 열에 대한


stack
df = df.set_index(['Client','INDUSTRY']) 
df.columns = df.columns.str.split('_', expand=True) 
df = df.stack(0).reset_index().rename(columns={'level_2':'Year_Half'}) 
print (df) 
    Client INDUSTRY Year_Half 12MO 6MO 
0  XXX  AAA 1H2016  1 1 
1  XXX  AAA 1H2017  0 0 
2  XXX  AAA 2H2016  1 0 
3  XXX  AAA 2H2017  0 0 
4  YYY  BBB 1H2016  0 0 
5  YYY  BBB 1H2017  0 1 
6  YYY  BBB 2H2016  0 0 
7  YYY  BBB 2H2017  1 0 
8  ZZZ  CCC 1H2016  0 1 
9  ZZZ  CCC 1H2017  1 0 
10 ZZZ  CCC 2H2016  0 1 
11 ZZZ  CCC 2H2017  1 0 
12 XXX  AAA 1H2016  1 1 
13 XXX  AAA 1H2017  0 0 
14 XXX  AAA 2H2016  1 0 
15 XXX  AAA 2H2017  0 0 
단지 6MO12MO 값과 열의 순서가 중요하다 (10)

경우

df = df.set_index(['Client','INDUSTRY']) 
df.columns = df.columns.str.split('_', expand=True) 
df = (df.stack(0) 
     .reindex_axis(['6MO','12MO'], 1) 
     .reset_index() 
     .rename(columns={'level_2':'Year_Half'})) 
print (df) 
    Client INDUSTRY Year_Half 6MO 12MO 
0  XXX  AAA 1H2016 1  1 
1  XXX  AAA 1H2017 0  0 
2  XXX  AAA 2H2016 0  1 
3  XXX  AAA 2H2017 0  0 
4  YYY  BBB 1H2016 0  0 
5  YYY  BBB 1H2017 1  0 
6  YYY  BBB 2H2016 0  0 
7  YYY  BBB 2H2017 0  1 
8  ZZZ  CCC 1H2016 1  0 
9  ZZZ  CCC 1H2017 0  1 
10 ZZZ  CCC 2H2016 1  0 
11 ZZZ  CCC 2H2017 0  1 
12 XXX  AAA 1H2016 1  1 
13 XXX  AAA 1H2017 0  0 
14 XXX  AAA 2H2016 0  1 
15 XXX  AAA 2H2017 0  0 
+0

쿨 .... 덕분에 일했다 그것의 내 데이터 세트는 더 긴 범위를 가지고 있으며, 나는 수준 내가 가진 4로 열 이름을 가지고 단지 이 칼럼의 이름이 .. –