2016-08-14 3 views
2

센서스 데이터로 작업하고 있습니다 (Census package 사용). 센서스 API로 변수를 선택하면 원시 형식 (예 : B01001_007)으로 전달되므로 열 이름을 라벨 (예 : 남성 18-19 세)로 바꾸고 싶습니다. 데이터 프레임 헤더를 다른 데이터 프레임의 값으로 업데이트하십시오.

내가이가 df.columns를 = 통해 수행 할 수 있습니다 알고 [ '남성 18 ~ 19 년, '남성 20 년, '남성 21 년'] 그러나 이것은 지루한입니다.

내 DF의 헤더에 자동으로 쿼리하는 일부 유형의 매핑을 수행하는 방법이 있습니까?

샘플 데이터 :

import pandas as pd 
from pandas import DataFrame 

variables_table = pd.DataFrame({'variable': ['B01001_007E','B01001_008E','B01001_009E'], 
        'label': ['male 18 to 19 years','male 20 years','male 21 years'] 
        }) 

variables_table 

label     variable 
male 18 to 19 years  B01001_007E 
male 20 years   B01001_008E 
male 21 years   B01001_009E 

부정한 출력 : variables_table.set_index('variable')['label'] 인덱스 'variable` 인 일련

df = pd.DataFrame({'B01001_007E': ['100','200','300'], 
           'B01001_008E': ['300','200','100'], 
           'B01001_009E': ['500','100','200']}) 
df 
B01001_007E  B01001_008E  B01001_009E 
100    300    500 
200    200    100 
300    100    200 

답변

4
df.rename(columns=variables_table.set_index('variable')['label']) 
Out: 
    male 18 to 19 years male 20 years male 21 years 
0     100   300   500 
1     200   200   100 
2     300   100   200 

참고있다. 해당 색인에 대한 매핑을 수행합니다.

이것은 올바른 작동이 아닙니다. 실제 데이터 프레임을 변경하려면 df : df = df.rename(columns=variables_table.set_index('variable')['label'])에 다시 할당하거나 inplace 매개 변수를 사용합니다. df.rename(columns=variables_table.set_index('variable')['label'], inplace=True)

관련 문제