簡體   English   中英

使用來自另一個數據框的值更新數據框標頭

[英]Update dataframe header with values from another dataframe

我正在使用人口普查數據(使用Census程序包 )。 當我使用普查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
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.rename(columns=variables_table.set_index('variable')['label']) ,請將其分配回df: df = df.rename(columns=variables_table.set_index('variable')['label'])或使用df.rename(columns=variables_table.set_index('variable')['label'], inplace=True)參數: df.rename(columns=variables_table.set_index('variable')['label'], inplace=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM