模型 Pandas 数据框列作为类别列表

Model Pandas Data Frame column as List of Category

我想减少 Pandas dataframe 的内存输出。 我正在解析一个 Json,其中一些列是多值类别列表,例如:

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

这会自动推断为 'object' 列,但理想情况下是类别列表。 每当我有一个单值分类列时,进行转换就非常简单:

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

但是我想将类型设置为类别列表的列呢? 稍后我将对该列进行编码,将其转换为一系列布尔列,因此我不确定转换为 'category' 列表的初始内存优势是否会有益。 谢谢!

不,这不可能

使用 Pandas 系列来保存列表是不可取的,因为它总是 dtype object 并且表示指向任意类型的指针。因此,对此类系列的操作将不可矢量化,并且会附加内存开销。

另一种选择

如果您在每个列表中都有一定数量的项目,您可以将列表系列拆分为多个系列,请参阅 。然后让每个系列成为分类:

for col in ['col1', 'col2', 'col3']:
    df[col] = df[col].astype('category')