Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/pandas/4.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
Pandas 使用合并数据帧中的标头名称进行更改_Pandas_Dataframe_Merge_Header_Rename - Fatal编程技术网

Pandas 使用合并数据帧中的标头名称进行更改

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 我使用

我有一个使用pandas创建的数据透视表(名为“budgets”)。如下所示

               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')的标题名,即使我试图只替换一个标题名。我不明白为什么这两个标题名都被删除

如果以下两个问题中的一个得到回答,我想我可以解决我的问题

  • 如何删除“预算”中的“当前预算”标题
  • 预算。iloc[0]表示(AA 645000 90000)的行,而不是“当前预算”

  • 如何更改合并数据框中的列名
  • 合并的[“设计预算”]=合并的[“('Current Budget','D')”]带来关键错误:“Current Budget”

    merged.columns=merged.columns.str.replace()不起作用。它只删除这两个列的列名


    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]表示列在数据帧中的位置。