2016-08-14 21 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'])或使用就地參數:df.rename(columns=variables_table.set_index('variable')['label'], inplace=True)

相關問題