2016-08-14 11 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 

汚れた出力:

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 

variables_table.set_index('variable')['label']はインデックス「variable`あるシリーズであること。そのインデックスのマッピングを行います。

これはインプレイス操作ではありません。実際のデータフレームを変更する場合は、df:df = df.rename(columns=variables_table.set_index('variable')['label'])に割り当て、またはinplaceパラメータを使用します。df.rename(columns=variables_table.set_index('variable')['label'], inplace=True)

関連する問題