Вы можете разделить Действия, выполнив split
, а затем преобразовав полученный список в Series
.
Затем melt
из широкого в длинный формат и groupby
результирующий столбец value
(который Activities
).
В вашем сгруппированном фрейме данных join
поля Имени, связанные с каждым действием.
Например:
(df.Activities.str.split(",")
.apply(pd.Series)
.merge(df, right_index=True, left_index=True)
.melt(id_vars="Name", value_vars=[0,1,2])
.groupby("value")
.agg({'Name': lambda x: ','.join(x)})
.reset_index()
.rename(columns={"value":"Activities"})
)
Вывод:
Activities Name
0 Baseball Eric,Mike
1 Basketball Mike
2 Soccer Eric,Natasha
3 Swimming Eric
Примечание. Методы reset_index()
и rename()
в конце цепочки просто косметические;основные операции завершаются после агрегации groupby
.