Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用其他数据帧中的值更新数据帧标头_Python_Pandas_Dictionary_Merge - Fatal编程技术网

Python 使用其他数据帧中的值更新数据帧标头

Python 使用其他数据帧中的值更新数据帧标头,python,pandas,dictionary,merge,Python,Pandas,Dictionary,Merge,我正在处理人口普查数据(使用)。当我使用普查API选择变量时,它们以原始格式传递(例如B01001_007),我想用标签替换列名(例如男性18至19岁) 我知道这可以通过df.columns=[“男性18至19岁”, “男性20岁”, “男性21岁”] 但这很乏味 是否有一种方法可以进行某种类型的映射,从而自动查询到下面my df中的标题 样本数据: import pandas as pd from pandas import DataFrame variables_table = pd.Da

我正在处理人口普查数据(使用)。当我使用普查API选择变量时,它们以原始格式传递(例如B01001_007),我想用标签替换列名(例如男性18至19岁)

我知道这可以通过df.columns=[“男性18至19岁”, “男性20岁”, “男性21岁”] 但这很乏味

是否有一种方法可以进行某种类型的映射,从而自动查询到下面my 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
不干净的输出:

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
请注意,
variables\u table.set\u index('variable')['label']
是一个索引为'variable'的系列。它将在该索引上进行映射

这不是就地操作。如果要更改实际数据帧,请将其分配回df:
df=df.rename(columns=variables\u table.set\u index('variable')['label'])
或使用inplace参数:
df.rename(columns=variables\u table.set\u index('variable')['label'],inplace=True)