Pandas объединить в список по столбцу - PullRequest
0 голосов
/ 15 февраля 2020

Есть ли способ объединить два pandas кадра данных так, чтобы те же имена столбцов заканчивались как записи списка в объединенном df?
Например:

import pandas as pd
df_1 = pd.DataFrame({'A' : [1,2,3], 'B' : [4,5,6], 'C' : [7,8,9]})
df_2 = pd.DataFrame({'A' : [1,2,3], 'B' : ['a','b','c'], 'C' : ['d','e','f']})

df_merged = df_1.merge(df_2, on='A') # This should be changed, I guess

приводит к:

   A  B_x  C_x B_y C_y
0  1    4    7   a   d
1  2    5    8   b   e
2  3    6    9   c   f

Я надеялся на:

   A  B       C
0  1  [4, a]  [7, d]
1  2  [5, b]  [8, e]
2  3  [6, c]  [9, f]

Так что это похоже на функцию groupby.apply(list), но для слияния фреймов данных.

1 Ответ

1 голос
/ 15 февраля 2020

IIU C мы можем сделать groupby с axis=1

s=df_1.merge(df_2, on='A').set_index('A')
s=s.groupby(s.columns.str.split('_').str[0],axis=1).agg(lambda x : x.tolist()).reset_index()
s
   A       B       C
0  1  [4, a]  [7, d]
1  2  [5, b]  [8, e]
2  3  [6, c]  [9, f]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...