Pandas get_dummies输出dtype integer / bool而不是float

时间:2014-12-14 11:35:15

标签: python pandas

我想知道是否可以让pandas中的get_dummies函数输出dintmies数据帧,其dtype比默认的float64轻。

因此,对于具有分类列的示例数据框:

In []: df = pd.DataFrame([(blue,wood),(blue,metal),(red,wood)],
                         columns=['C1','C2'])
In []: df
Out[]:
    C1      C2
0   blue    wood
1   blue    metal
2   red     wood
在获得dummis之后,它看起来像:

In []: df = pd.get_dummies(df)
In []: df    
Out[]:
 C1_blue    C1_red  C2_metal    C2_wood
0   1   0   0   1
1   1   0   1   0
2   0   1   0   1

这很好。但是,默认情况下,1和0都是float64:

In []: df.dtypes
Out[]: 
C1_blue     float64
C1_red      float64
C2_metal    float64
C2_wood     float64
dtype: object

我知道我可以随后用astype更改dtype:

In []: df = pd.get_dummies(df).astype(np.int8)

但我不想让内存中有浮点数据的数据帧,因为我正在处理一个大数据帧(来自约5Gb的csv)。我希望将假人直接作为整数。

2 个答案:

答案 0 :(得分:2)

有一个未解决的问题w.r.t.这个,请看这里:https://github.com/pydata/pandas/issues/8725

答案 1 :(得分:0)

浮动问题现已解决。从pandas版本0.19开始,pd.get_dummies函数将伪编码列作为小整数返回。

请参阅:http://pandas.pydata.org/pandas-docs/stable/whatsnew.html#get-dummies-now-returns-integer-dtypes