Как объединить два фрейма данных с дубликатами столбцов, чтобы объединить каждое строковое значение? - PullRequest
0 голосов
/ 29 октября 2019

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

На данный момент я пробовал использовать pandas .merge(on = 'name'), а также .groupby ('name') ['dept']. apply (',' .join), но при этом удаляются все остальные строки.

При использовании merge отображаются только значенияс дубликатами. Я хотел бы вернуть неизмененный список с тем же количеством элементов, просто добавив дублирующее значение в столбец 'dept'

Например:

df1 = df2.merge(on='name')

df1.groupby('name')['dept'].apply(', '.join)

df1:
name      dept

bob       sales
billy     support
jill      accounting
hank      paper


df2:
name      dept

bob       support   
ruby      hr
hank      telesales
billy     accounting


final df:
name      dept
bob       sales, support
billy     support, accounting
jill      accounting
hank      paper, telesales

1 Ответ

0 голосов
/ 29 октября 2019

Конечно, должен быть более простой способ, но пока ...

def convert (x):

if type(x) == pd.core.series.Series:

    return ','.join(set(x.values))

else:

    return x

def merge_them (df1, df2):

temp = pd.concat([df1,df2])

index = pd.Index(set(df1.index)|set(df2.index))

return pd.Series(index.map(lambda x: convert(df3['dept'].loc[x])),
                            index = index)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...