Попытка объединить 2 кадра данных и сохранить определенные данные в виде массива в одной ячейке. - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть следующие 3 фрейма данных:

Фрейм данных первого:

DF1: 

iID data1 data2

10  blue  green

11  red   teal

Второй фрейм данных:

DF2:

iID rH repH

10  50 60 

10  60 70 

11  70 50 

(DF2 может иметь 1 или 2строк на iID)

Я хочу, чтобы у моего выходного DF был массив в одной ячейке для rH и repH

сделать вывод будет что-то вроде:

OUTPUT DF:

iID data1 data2 rH      repH

10  blue  green [50,60] [60,70]

11  red   teal  [70]    [50]

Ответы [ 2 ]

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

Стоит добавить ниже дополнения ..

соединение, которое по умолчанию остается левым:

df1.join(df2)

Или concat, которое по умолчанию является внешним соединением:

pd.concat([df1, df2], axis=1)

Просто добавив больше повествования:

>>> df1 = pd.DataFrame({'a':range(6),
...                     'b':[5,3,6,9,2,4]}, index=list('abcdef'))
>>> df2 = pd.DataFrame({'c':range(4),
...                     'd':[10,20,30, 40]}, index=list('abhi'))
>>>
>>>
>>> df1
   a  b
a  0  5
b  1  3
c  2  6
d  3  9
e  4  2
f  5  4
>>> df2
   c   d
a  0  10
b  1  20
h  2  30
i  3  40
>>> df4 = df1.join(df2)
>>> df4
   a  b    c     d
a  0  5  0.0  10.0
b  1  3  1.0  20.0
c  2  6  NaN   NaN
d  3  9  NaN   NaN
e  4  2  NaN   NaN
f  5  4  NaN   NaN
0 голосов
/ 26 сентября 2018

IIUC

df1.merge(df2.groupby('iID').agg(lambda x : x.tolist()).reset_index())
Out[144]: 
   iID data1  data2        rH      repH
0   10  blue  green  [50, 60]  [60, 70]
1   11   red   teal      [70]      [50]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...