【问题标题】:Model Pandas Data Frame column as List of Category将 Pandas 数据框列建模为类别列表
【发布时间】:2018-12-21 19:37:00
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: python pandas sklearn-pandas pandas-datareader


    【解决方案1】:

    不,这是不可能的

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

    另一种选择

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

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

    【讨论】:

    • 谢谢,我接受这个,因为我相信这是我问题的正确答案。我正在探索这条改进我的解决方案的途径!我目前的问题如下:stackoverflow.com/questions/51367600/…
    猜你喜欢
    • 2022-08-18
    • 2021-03-22
    • 2017-06-22
    • 1970-01-01
    • 2021-11-17
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    相关资源
    最近更新 更多