【发布时间】:2019-12-13 01:38:44
【问题描述】:
我想知道是否可以要求pandas中的get_dummies函数输出dtype比默认float64轻的dummy数据帧。
因此,对于具有分类列的示例数据框:
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
得到假人后的样子:
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)。我想将假人直接作为整数。
【问题讨论】: