小编epi*_*rus的帖子

Python pandas:merge失去了分类列

我正在处理分类数据的大型DataFrame,我发现当我在两个数据帧上使用pandas.merge时,任何列的分类数据都会自动向上转换为更大的数据类型.(这可以大大增加RAM消耗.)一个简单的例子来说明:

编辑:做了一个更恰当的例子

import pandas
import numpy

df1 = pandas.DataFrame(
    {'ID': [5, 3, 6, 7, 0, 4, 8, 2, 9, 1, 6, 5, 4, 9, 7, 2, 1, 8, 3, 0], 
     'value1': pandas.Categorical(numpy.random.randint(0, 2, 20))})

df2 = pandas.DataFrame(
    {'ID': [5, 3, 6, 7, 0, 4, 8, 2, 9, 1],  
     'value2': pandas.Categorical(['c', 'a', 'c', 'a', 'c', 'b', 'b', 'a', 'a', 'b'])})

result = pandas.merge(df1, df2, on="ID")
result.dtypes


Out []:
ID         int32
value1     int64
value2    object
dtype: object
Run Code Online (Sandbox Code Playgroud)

我希望value1和value2在结果DataFrame中保持分类.转换为对象类型的字符串标签可能特别昂贵.

https://github.com/pydata/pandas/issues/8938这可能是按预期的?反正有没有避免这个?

python merge join pandas categorical-data

10
推荐指数
1
解决办法
3078
查看次数

标签 统计

categorical-data ×1

join ×1

merge ×1

pandas ×1

python ×1