如何将Python Pandas value_counts()的输出数据类型改为非int64?
解决Value_counts结果列内存占用过高的问题
核心说明
value_counts() 本身没有指定输出计数列数据类型的参数,默认生成 int64 类型,针对大数据集可以通过以下两种方式将计数列转换为更小的整数类型:
方法1:统计后转换数据类型
先完成统计,再对counts列执行类型转换。转换前必须先确认计数的最大值不超过目标类型的范围(比如int16的最大值是32767),避免数据溢出:
# 执行统计操作 df = df.value_counts().rename_axis(['Value','Class']).reset_index(name='counts') # 检查计数最大值,确认是否符合目标类型范围 print(df['counts'].max()) # 确认范围后转换类型 df['counts'] = df['counts'].astype('int16')
方法2:用Groupby+Size直接生成指定类型
通过groupby结合size()统计,中途直接转换类型,减少内存占用的中间环节:
df = df.groupby(['Value','Class']).size().astype('int16').reset_index(name='counts')
关键注意事项
- 如果计数最大值超过
int16的上限(32767),请替换为更大的整数类型(如int32),否则会触发数据溢出错误。 - 对于超大规模数据集,优先选择方法2,避免生成不必要的
int64中间结果,进一步节省内存。
内容的提问来源于stack exchange,提问作者Vance
相关产品推荐
相关产品推荐

