You need to enable JavaScript to run this app. Pandas DataFrame按年月统计满足多列条件的日度事件数量方法
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame按年月统计满足多列条件的日度事件数量方法

错误原因说明

  • 你写的lambda函数存在语法错误:x >= 1 & <=5是不合法的比较写法,且位运算符&优先级高于比较运算符,不加括号会导致运算逻辑完全错误。
  • 第二种过滤写法逻辑错误:你将df.loc[xxx]返回的DataFrame直接和布尔数组做&运算,类型不匹配所以抛出“混合数组与标量”的报错,多条件过滤不需要嵌套df.loc。

正确实现代码

方案1:统计满足条件的小时数(与你提供的期望输出完全匹配)

# 生成同时满足所有条件的布尔掩码,若实际列名不同可自行替换
mask = (df['wind'] <= 5) & (df['temp'] >= 1.0) & (df['temp'] <= 5.0) & (df['rh'] <= 30)
# 筛选符合条件的行
valid_df = df[mask]
# 按站点、年、月分组统计数量
result = valid_df.groupby(['site', 'year', 'month'], as_index=False).size().rename(columns={'size': 'condition_count'})

方案2:统计达标天数(当日存在至少1小时满足条件即计为1天,符合你描述的日度“事件”定义)

# 生成同时满足所有条件的布尔掩码
mask = (df['wind'] <= 5) & (df['temp'] >= 1.0) & (df['temp'] <= 5.0) & (df['rh'] <= 30)
valid_df = df[mask]
# 先按站点、年、月、日去重,再分组统计达标天数
result = valid_df.drop_duplicates(subset=['site', 'year', 'month', 'day'])\
                 .groupby(['site', 'year', 'month'], as_index=False)\
                 .size()\
                 .rename(columns={'size': 'condition_count'})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 00:00:05