You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中将统计摘要的Count值转换为整数

解决pandas.describe()统计摘要中Count值无法转为整数显示的问题

你的代码没生效的核心原因是:round(2) 执行后,整个统计摘要DataFrame的列数据类型已经变成了float。即便你把第一行(Count行)转成int,赋值回DataFrame时,会被列的float类型强制转换回float(比如100变成100.0),所以打印时还是会显示小数。

下面给两种可行的解决思路:

思路1:只修改显示格式(推荐,不改变数据本身类型)

这种方法不修改DataFrame的底层数据类型,只是调整打印/展示时的格式,既保留统计数据的数值精度,又让Count显示为整数。

在Jupyter Notebook/IPython中用样式展示:

import pandas as pd

# 生成统计摘要并保留两位小数
summary_stats = df.describe().round(2)

# 自定义显示格式:Count行显示为整数,其余行保留两位小数
styled_table = summary_stats.style.format(
    lambda val: f"{val:.0f}" if val.name == "count" else f"{val:.2f}"
)

# 展示格式化后的表格
display(styled_table)

在普通Python脚本中打印格式化结果:

import pandas as pd

summary_stats = df.describe().round(2)

# 按列设置格式化规则,对Count行单独处理
formatted_str = summary_stats.to_string(
    formatters={
        col: lambda x: f"{int(x)}" if x.name == "count" else f"{x:.2f}" 
        for col in summary_stats.columns
    }
)

print(formatted_str)

思路2:修改数据类型(让列支持混合类型)

如果需要从底层数据上把Count行改成整数,可以将DataFrame的列类型转为object,这样就能同时存储整数和float值:

import pandas as pd

summary_stats = df.describe().round(2)

# 将Count行转为整数
summary_stats.loc["count"] = summary_stats.loc["count"].astype(int)

# 把整个DataFrame的列转为object类型,保留混合数据类型
summary_stats = summary_stats.astype(object)

print(summary_stats)

这种方法的缺点是,后续对统计数据做数值计算时,可能需要重新转换类型,所以更推荐第一种只调整显示格式的方案。


内容的提问来源于stack exchange,提问作者Dorito0102

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 19:30:52