通过合并的熊猫数据框的标题名称进行更改

时间:2018-09-10 14:56:43

标签: pandas dataframe merge header rename

我有一个使用熊猫创建的数据透视表(名为“预算”)。看起来如下。

               Current Budget   
Type            C         D
Project Name        
AA            645000     90000
BB            664039     73456
CC            994654     56398
DD            3290090.46 95000

我使用

将这个数据框与另一个数据框(名为“ ws_project”)合并
merged = pd.merge(budgets, ws_project, on=['Project Name'],how='inner')

预算和ws_project具有相同的列['Project Name'],因此我使用此列将两者合并。

这是合并数据框的外观

    Project Name    ('Current Budget', 'C') ('Current Budget', 'D') Project Status
0   AA  645000  90000   Active
1   BB  664039  73456   Active
2   CC  994654  56398   Active
3   DD  3290090.46  95000   Active

如您所见,列名称现在为(“当前预算”,“ C”)和(“当前预算”,“ D”)。由于某些原因,我无法使用这些键。它带来了一个关键错误。因此,我尝试通过直通

替换列名
merged.columns = merged.columns.str.replace("('Current Budget', 'D')", "")

但是,即使我只尝试替换一个,此命令也会删除两个标题的标题(“当前预算”,“ D”)和(“当前预算”,“ C”)。我不明白为什么两个都被删除。

如果回答以下两个问题之一,我可以解决我的问题。

  1. 如何删除“预算”中的“当前预算”标题?

budget.iloc [0]表示(AA 645000 90000)的行,而不是“当前预算”。

  1. 如何更改合并数据框中的列名?

merged [“ Design_Budget”] = merged [“(('Current Budget','D')”]带来KeyError:'Current Budget'

merged.columns = merged.columns.str.replace()不起作用。只是删除了两者的列名。

merged = merged.rename(columns = {“('Current Budget','D')”:“ D”,“('Current Budget','C')”:“ C”})不变任何。

1 个答案:

答案 0 :(得分:1)

通常,您应避免给列名加上任何“特殊字符”,即,除语言中的字符串以外具有其他含义的字符。

重命名列的最简单方法是使用以下内容

 merged.columns =  ["Project Name","D","C"]

第一个dataFrame具有分层索引,您也可以像这样删除

budgets.columns = budgets.columns.get_level_values(0)

但是我认为前者要短一些。