Pandas 使用合并数据帧中的标头名称进行更改
我有一个使用pandas创建的数据透视表(名为“budgets”)。如下所示Pandas 使用合并数据帧中的标头名称进行更改,pandas,dataframe,merge,header,rename,Pandas,Dataframe,Merge,Header,Rename,我有一个使用pandas创建的数据透视表(名为“budgets”)。如下所示 Current Budget Type C D Project Name AA 645000 90000 BB 664039 73456 CC 994654 56398 DD 3290090.46 95000 我使用
Current Budget
Type C D
Project Name
AA 645000 90000
BB 664039 73456
CC 994654 56398
DD 3290090.46 95000
我使用
merged = pd.merge(budgets, ws_project, on=['Project Name'],how='inner')
budgets和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
如您所见,现在的列名是('Current Budget','C')和('Current Budget','D')。由于某些原因,我无法使用键。这会带来键错误。因此,我尝试通过
merged.columns = merged.columns.str.replace("('Current Budget', 'D')", "")
但是这个命令删除了('Current Budget','D')和('Current Budget','C')的标题名,即使我试图只替换一个标题名。我不明白为什么这两个标题名都被删除
如果以下两个问题中的一个得到回答,我想我可以解决我的问题
merged=merged。重命名(columns={('Current Budget','D'):“D”,“('Current Budget','C'):“C”})不会更改任何内容。通常,您应该避免使用任何“特殊字符”来指定列名,即具有语言中字符串以外含义的字符 重命名列的最简单方法是使用以下命令
merged.columns = ["Project Name","D","C"]
第一个数据帧有一个层次索引,您也可以像这样删除它
budgets.columns = budgets.columns.get_level_values(0)
但我认为前者较短。您希望留下哪些列?即[“项目名称”、“D”、“C”]?谢谢!对于第一个解决方案,我可以只命名其中一列,如merge.columns[2]=['C']?我看到一个错误,不知道是否还有类似的方法。第二个解决方案非常有效!!可以尝试df.columns.values[1]=“C”,其中值[1]表示列在数据帧中的位置。