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

Python 模型数据框列作为类别列表,python,pandas,sklearn-pandas,pandas-datareader,Python,Pandas,Sklearn Pandas,Pandas Datareader,我想减少熊猫数据帧的内存输出。 我正在解析一个Json,其中一些列是类别的多值列表,例如: querySelectedBrands:[“b1”、“b2”、“b3”] 这会自动推断为“对象”列,但理想情况下是一个类别列表。 每当我有一个单值分类列时,进行转换非常简单: interactions[col] = interactions[col].astype('category') 但是我想将类型设置为类别列表的列呢? 稍后,我将对该列进行编码,并将其转换为一系列布尔列,因此我不确定在“categ

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

querySelectedBrands:[“b1”、“b2”、“b3”]

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

interactions[col] = interactions[col].astype('category')
但是我想将类型设置为类别列表的列呢? 稍后,我将对该列进行编码,并将其转换为一系列布尔列,因此我不确定在“category”列表中进行转换的初始内存好处是否会有好处。 谢谢!

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

替代方案 如果每个列表中都有一定数量的项目,则可以将列表系列拆分为多个系列,请参见。然后将每个系列进行分类:

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

谢谢,我接受这一点,因为我相信这是我问题的正确答案。我正在探索这条道路以改进我的解决方案!我当前的问题如下: