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

DataFrame糖尿病患者年龄统计格式修正求助:索引与名称不符

问题描述

我需要统计数据框中糖尿病患者的最高发年龄,期望输出的索引为整数类型,名称为“age”,格式如下:

age
25    14
31    13
41    13
29    13
43    11
22    11
28    10
33    10
38    10
36    10
Name: age, dtype: int64

但执行代码(data_clean['age'].where(data_clean['class'] == 'Diabetes')).value_counts().head(10)后,得到的结果索引为float类型,名称为“count”,格式如下:

age
25.0    14
31.0    13
41.0    13
29.0    13
43.0    11
22.0    11
28.0    10
33.0    10
38.0    10
36.0    10
Name: count, dtype: int64

请问如何将结果索引改为整数类型,名称改为“age”?

解决方案

方法1:链式调用一步实现

直接筛选糖尿病患者的年龄列后统计,从根源避免类型问题,同时调整索引和名称:

(
    data_clean[data_clean['class'] == 'Diabetes']['age']
    .value_counts()
    .head(10)
    .rename_axis('age')
    .rename('age')
)

说明:直接筛选符合条件的行,得到的年龄列是整数类型,后续统计的索引天然为整数;rename_axis设置索引名称,rename修改Series的名称,最终输出完全匹配需求。

方法2:基于原结果分步调整

如果想保留原代码的筛选逻辑,可对结果做后处理:

# 执行原代码获取初始结果
result = (data_clean['age'].where(data_clean['class'] == 'Diabetes')).value_counts().head(10)
# 将索引转换为整数类型
result.index = result.index.astype(int)
# 修改Series的名称为"age"
result.name = 'age'

问题根源

原代码使用where时,会为不符合条件的行填充NaN,而NaN只能存储在float类型的Series中,导致后续统计的索引变为float。直接筛选糖尿病患者的行再取年龄列,就能得到整数类型的Series,从源头解决类型问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:15:06