Модель Pandas Data Frame в виде списка категорий

Я хотел бы уменьшить объем памяти моего Pandas dataframe, Я разбираю Json, где некоторые столбцы представляют собой многозначный список категорий, например:

querySelectedBrands":["b1","b2","b3"]

Это автоматически выводится как столбец "объект", но в идеале это список категорий. Всякий раз, когда у меня есть столбец с однозначным категориальным значением, довольно просто выполнить преобразование:

interactions[col] = interactions[col].astype('category')

Но как насчет столбца, который я хочу установить тип в качестве списка категории? Позже я закодирую этот столбец, преобразовав его в серию логических столбцов, поэтому я не уверен, будет ли выгодным первоначальное преимущество преобразования памяти в список "категории". Спасибо!

1 ответ

Решение

Нет, это невозможно

Использование серии Pandas для хранения списков нецелесообразно, потому что это всегда будет dtype object и представляют указатели на произвольные типы. Таким образом, операции с такими сериями не будут векторизованными и будут связаны с накладными расходами памяти.

Альтернатива

Если у вас есть определенное количество элементов в каждом списке, вы можете разбить свою серию списков на несколько серий, см. Раздел Pandas для разделения столбцов списков на несколько столбцов. Затем сделайте каждую серию категориальной:

for col in ['col1', 'col2', 'col3']:
    df[col] = df[col].astype('category')
Другие вопросы по тегам