Модель 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')