Pandas如何按年份汇总YYYY-MM-DD格式日期对应数值并实现查询函数
问题根因
- 未将日期列
Dygn转换为pandas datetime类型,无法提取年份做筛选 - 变量
a直接写在字符串'a-01-01'中不会被解析,无法匹配到对应日期区间,该写法完全无效 - 直接用完整的YYYY-MM-DD格式日期列和年份字符串做等值判断,逻辑错误,没有任何匹配结果
- 求和计算后的结果没有赋值存储,return语句引用的
row变量未定义,无有效返回值 - 未将
df作为参数传入函数,存在变量作用域隐患
解决步骤
先将日期列转换为datetime格式,执行以下代码:
df['Dygn'] = pd.to_datetime(df['Dygn'], format='%Y-%m-%d')替换原有函数为如下写法:
def rain_year(year, df): # 匹配指定年份的所有行,对降雨量列求和返回 return df.loc[df['Dygn'].dt.year == int(year), 'ederbörd(mm)'].sum() # 调用测试 print(rain_year("1995", df))
内容的提问来源于stack exchange,提问作者Kovac
相关产品推荐
相关产品推荐

