внутреннее объединение dataFrame с одинаковыми именами столбцов и применение агрегатной функции - PullRequest
0 голосов
/ 26 января 2019

Я хочу объединить два фрейма данных, у каждого из которых есть несколько столбцов с одинаковыми именами. Для столбцов с тем же именем я не хочу новый столбец с суффиксом в объединенном dataFrame, но вместо этого хочу сгруппировать их вместе и применить статистическую функцию (в данном примере sum)

есть:

d1

      col1
0       1
1       2

d2

      col1
0       3
2       5

с pd.merge(d1, d2, how='inner', left_index=True, right_index=True)

получить:

     col1_x   col1_y
0       1       3

но хочу:

      col1
0       4

1 Ответ

0 голосов
/ 26 января 2019

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

print (d1)
   col1  col3
0     1     6
1     2     3
print (d2)
   col1  col2
0     3     2
2     5     4

Ваше решение - добавьте groupby по именам разделенных столбцов и совокупности sum:

df = pd.merge(d1, d2, how='inner', left_index=True, right_index=True)

df = df.groupby(lambda x: x.split('_')[0], axis=1).sum()
#alternative
#df = df.groupby(df.columns.str.split('_').str[0], axis=1).sum()

Здесь проще использовать concat на join='inner' с sum по столбцам:

df = pd.concat([d1, d2], axis=1, join='inner').sum(level=0, axis=1)
print (df)
   col1  col3  col2
0     4     6     2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...