Проблема:
У меня большой CSV-файл, который выглядит примерно так:
A B C D ...
1 dog black NULL ...
1 dog white NULL ...
1 dog black NULL ...
2 cat red NULL ...
...
Теперь я хочу "сгруппировать по" столбцу A
и объединить каждый оставшийся столбец в список через запятую без дубликатов. Решения должны выглядеть примерно так:
A B C D ...
1 dog black, white NULL ...
2 cat red NULL ...
...
Поскольку имена и номера столбцов в CSV могут изменяться, я предпочитаю решение без жестко закодированных имен.
Используемый подход:
Я попробовал пакет pandas
со следующим кодом:
import pandas as pd
data = pd.read_csv("C://input.csv", sep=';')
data = data.where((pd.notnull(data)), None)
data_group = data.groupby(['A']).agg(lambda x: set(x))
data_group.to_csv("C://result.csv", sep=';')
Оператор set
делает именно то, что я хочу. Тем не менее, результирующий CSV выглядит так:
A B C D ...
1 {'dog'} {'black', 'white'} {None} ...
2 {'cat'} {'red'} {None} ...
...
Я не хочу, чтобы {}
и ''
в моем экспорте, а также столбец D
должны были быть пустыми и не содержать слова None
.
Вопрос:
Я на правильном пути или есть более элегантный способ достичь своей цели?