Я обрабатываю набор данных, который поступает из файла CSV, и есть много повторяющихся значений столбцов, хотя в строках есть один столбец, который отличается.
Вот пример:
Pandas(Index=457, id='ABC1', type='factory', name='ABC Factory', country='GB', machine='X6754')
Pandas(Index=458, id='ABC1', type='factory', name='ABC Factory', country='GB', machine='ZHG89')
Можно ли сжать это в одну запись в фрейме данных? Я хочу преобразовать это в json, поэтому в идеале это будет выглядеть так:
Pandas(Index=458, id='ABC1', type='factory', name='ABC Factory', country='GB', machines=['X6754', 'ZHG89'])
В этом посте задается только один вопрос, на который уже был дан ответ, поэтому в защиту того, чтобы оставить его открытым, я бы сказал, что если вы не можете ответить на вопрос, это не является основанием для его закрытия или удаления.
Если вы не уверены, посмотрите на ответ ниже.
Вывод, который я показал, был просто строками печати для итерации по фрейму данных, у меня нет никаких пользовательских объектов.
Я полагаю, вы можете использовать groupby
:
common_cols = ['id', 'type', 'name', 'country']
out = df.groupby(common_cols, as_index=False).agg({'machine': list})
print(out)
# Output
id type name country machine
0 ABC1 factory ABC Factory GB [X6754, ZHG89]
Настраивать:
>>> df
id type name country machine
457 ABC1 factory ABC Factory GB X6754
458 ABC1 factory ABC Factory GB ZHG89
Отличный ответ, именно то решение, которое мне нужно.
Я не знаю точно, что вы мне показываете (похоже на вызов инициализатора или repr для какого-то пользовательского объекта), и я не знаю, какие правила вы на самом деле хотите реализовать.