代码之家  ›  专栏  ›  技术社区  ›  Alessandro Benedetti

模型pandas数据框架列作为类别列表

  •  1
  • Alessandro Benedetti  · 技术社区  · 6 年前

    我想减少 Pandas dataframe 是的。 我正在分析一个json,其中一些列是类别的多值列表,例如:

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

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

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

    但我想将type设置为category列表的列呢? 稍后,我将对这个列进行编码,将其转换为一系列布尔列,因此我不确定在“category”列表中转换的初始内存效益是否会有好处。 谢谢!

    1 回复  |  直到 6 年前
        1
  •  1
  •   jpp    6 年前

    不,这不可能

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

    另一种选择

    如果每个列表中都有一组项,则可以将列表系列拆分为多个系列,请参见 Pandas split column of lists into multiple columns 是的。然后将每个系列分类:

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