Я пытаюсь сгруппировать и агрегировать df, состоящий из object
, float64
и int64
(example df)
Number Day Colour City ...
123 Monday Red London ...
234 Monday Blue Paris ...
234 Wednesday Yellow Paris ...
345 Tuesday Green Berlin ...
, создать новый df, подобный этому
Number Day Colour City ...
123 Monday Red London ...
234 Monday, Wednesday Blue, Yellow Paris ...
345 Tuesday Green Berlin ...
Сначала я попытался
df.groupby('Number').agg(lambda s: ', '.join({*s}))
Однако .join
не обрабатывает int64
и float64
хорошо и приводит к потере столбцов.
df = df.groupby('Number', as_index=False).agg(lambda x: ', '.join([str(i) for i in x]))
решает проблему объединения float64
и int64
, но приводит к этому
Number Day Colour City ...
123 Monday Red London ...
234 Monday, Wednesday Blue, Yellow Paris, Paris ...
345 Tuesday Green Berlin ...
Есть ли способ получить набор уникальных значений ({*s}
) и объединиться при работе с числами с плавающей запятой и целыми числами? Чего я не хочу, так это повторяющихся строк, в которых были объединены строки (например, Париж, Париж).