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

如何使用DataFrame计算指定年份对应数据的标准差

错误原因

你调用iloc报错是因为iloc是基于整数位置的索引工具,仅支持传入整数、整数列表/切片等位置类参数,不能直接传入年份作为筛选条件,参数类型不匹配就会触发类型错误。

正确实现步骤

1. 前置处理(推荐):将Date列转为datetime类型

避免字符串匹配可能出现的格式错误,后续时间类操作也更灵活:

import pandas as pd

# 转换Date列格式
df['Date'] = pd.to_datetime(df['Date'])

2. 筛选指定年份数据计算标准差

以2017年为例:

# 提取2017年的Price列计算标准差
sd_2017 = df[df['Date'].dt.year == 2017]['Price'].std()

如果你的Date列已经是字符串格式且严格遵循YYYY-MM-DD的命名规则,也可以不用转格式直接用字符串匹配:

sd_2017 = df[df['Date'].str.startswith('2017')]['Price'].std()

如果执行后仍有类型错误,可以先执行print(df['Price'].dtype)检查Price列是否为数值类型,若为object类型需要先转成数值格式再计算标准差。

扩展用法

如果需要批量计算所有年份的Price标准差,可以直接用groupby实现:

# 输出结果为索引是年份、值为对应年份标准差的Series
yearly_sd = df.groupby(df['Date'].dt.year)['Price'].std()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:06:03