Сгруппировать два кадра данных со столбцами MultiIndex - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть два фрейма данных, и я хотел бы создать новый, который будет включать в себя все уникальные столбцы двух исходных фреймов данных и объединение общих столбцов.

Это два образца:

enter image description here

enter image description here

И вот результат:

enter image description here

Все индексы столбцов должны совпадать для агрегирования.

Я написал следующий код:

df_all = pd.DataFrame
for dfColumn in df_1:
    if dfColumn in df_2.columns:
        df_all[dfColumn] = df_1.loc[:, dfColumn].add(df_2.loc[:, dfColumn])
    else:
        df_all[dfColumn] = df_1[dfColumn]

for dfColumn in df_2:
    if dfColumn not in df_all.columns:
        df_all[dfColumn] = df_2[dfColumn]

Тем не менее, я получаю сообщение об ошибке в следующей строке:

df_all[dfColumn] = df_1.loc[:, dfColumn].add(df_2.loc[:, dfColumn])

когда я пытаюсь присвоить значение df_all [dfColumn]

Это сводит меня с ума от всех возможностей, которые у вас есть с Python.

Но я не могу найти один, чтобы заставить его работать.

Спасибо за вашу помощь и время.

1 Ответ

0 голосов
/ 16 ноября 2018

На самом деле,

Я исправил только следующее:

df_all = pd.concat([df_1, df_2], axis=1)
df_all = df_all.groupby(level=[0, 1, 2], axis=1).sum()

Есть ли способ заменить level=[0, 1, 2] чем-то вроде level=df_all.columns.levels?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...