Панды сливаются и соединяются - PullRequest
0 голосов
/ 29 мая 2018

Я хочу объединить данные, которые выглядят примерно так (есть много разных файлов, содержащих bar данные).Существует множество различных фреймов данных, настроенных как показано ниже.

id  bar  baz
 1   10   15
 2   12   69

id  bar  baz
 3   96   75

id  bar  baz
 4   45   76
 5   75   23

id  foo  bah
 1  0.1   81
 2  0.2   59
 3  0.1   89
 4  0.1  642
 5  0.2   51

Я хочу объединить все в один файл, который имеет столбцы id, foo, bah, barи baz.Я пробовал повторные вызовы df = pd.merge(df, t_df, how='outer', on=key_trans[key]) в цикле for, но это не работает, и вместо этого создает столбцы bar_x, bar_y и т. Д. Для каждой исходной переменной.

Примечание выше:key_trans - это ключ, который предоставляет данные, которые необходимо сохранить, например id (и другие идентификаторы, которые я упростил, задавая вопрос).

1 Ответ

0 голосов
/ 29 мая 2018

Рассмотрим ниже df:

    bar_x   bar_y   bar_z   foo id
0   10.0    NaN     NaN     0.1 1
1   12.0    NaN     NaN     0.2 2
2   64.0    NaN     NaN     0.1 3
3   NaN     NaN     10.0    0.1 4
4   NaN     12.0    NaN     0.2 5

Использование:

df.set_index(['foo', 'id']).sum(axis=1).reset_index().rename(columns={0:'bar'})

Выход:

    foo id  bar
0   0.1 1   10.0
1   0.2 2   12.0
2   0.1 3   64.0
3   0.1 4   10.0
4   0.2 5   12.0

Сна ум приходит редактирование вопроса, ниже решения :

df.merge(pd.concat([df1, df2, df3], ignore_index=True))

   id   foo bar
0   1   0.1 10
1   2   0.2 12
2   3   0.1 96
3   4   0.1 45
4   5   0.2 75
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...