【发布时间】:2019-02-15 01:13:02
【问题描述】:
我有一个使用 pandas 创建的数据透视表(名为“预算”)。如下所示。
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')
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')的标题名称。我不明白为什么两者都被删除。
如果回答以下两个问题之一,我想我可以解决我的问题。
- 如何删除“预算”中的“当前预算”标题?
budget.iloc[0] 表示 (AA 645000 90000) 的行,而不是“当前预算”。
- 如何更改合并数据框中的列名?
merged["Design_Budget"] = merge["('Current Budget', 'D')"] 带来 KeyError: 'Current Budget'
merged.columns = merge.columns.str.replace() 不起作用。它只是删除两者的列名。
merged = merge.rename(columns={"('Current Budget', 'D')": "D", "('Current Budget', 'C')": "C"}) 不变任何。
【问题讨论】:
-
您希望保留哪些列?即[“项目名称”,“D”,“C”]?
标签: pandas dataframe merge header rename