Как объединить дубликаты в новые столбцы - PullRequest
2 голосов
/ 27 сентября 2019

Я пытаюсь объединить кадры данных в 1 столбце, для которого хотелось бы, чтобы выходные данные дубликатов были дополнительным столбцом вместо новой строки.

Что происходит сейчас:

df1 = pd.DataFrame({'A': ['A0'],
                     'B': ['B0']})

df2 = pd.DataFrame({'A': ['A0', 'A0'],
                     'C': ['C4', 'C5']})

df1.merge(df2, on = 'A', how = 'left')

Дает вывод:

    A   B   C
0  A0  B0  C4
1  A0  B0  C5

То, что я хотел бы вывод:

    A   B   C_1   C_2
0  A0  B0  C4    C5

Спасибо!

Ответы [ 2 ]

4 голосов
/ 27 сентября 2019

Создайте уникальные значения столбца A в df2 на MultiIndex на DataFrame.set_index со счетчиком столбца на GroupBy.cumcount, измените на Series.unstack и выравнивание Multiindex на map с join ::

df2 = df2.set_index(['A', df2.groupby('A').cumcount().add(1).astype(str)]).unstack()
df2.columns = df2.columns.map('_'.join)
df2 = df2.reset_index()
print (df2)
    A C_1 C_2
0  A0  C4  C5

df = df1.merge(df2, on = 'A', how = 'left')
print (df)
    A   B C_1 C_2
0  A0  B0  C4  C5
0 голосов
/ 27 сентября 2019

В одной строке кода:

df1.merge(df2.assign(Cs=range(0,len(df2))).pivot(index='A',columns='Cs'),on='A')

    A   B (C, 0) (C, 1)
0  A0  B0     C4     C5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...