Изменение с именами заголовков из объединенного кадра данных панд - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть сводная таблица (с именем «бюджеты»), созданная с помощью панд. Это выглядит следующим образом.

               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») и («Текущий бюджет», «С»), даже если я попытался заменить только одно. Я не понимаю, почему оба удалены.

Я думаю, что смогу решить мою проблему, если ответ на один из следующих двух вопросов.

  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 = {"('Текущий бюджет', 'D')": "D", "(" Текущий бюджет "," C ")": "C"}) не изменяется есть.

1 Ответ

0 голосов
/ 10 сентября 2018

Как правило, следует избегать указания имен столбцов с любыми "специальными символами", т.е. символами, которые имеют значение, отличное от строк в языке.

Самый простой способ переименовать столбцы - использовать следующий

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

Первый dataFrame имеет иерархический индекс, который вы также можете удалить вот так

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

Но первое, кажется, короче.

...