我想知道是否可以让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)。我希望将假人直接作为整数。
答案 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