python - 我想计算特定月份的熊猫列的平均值
问题描述
让 df 与列year
, month
, all time
, daytime
, region
, temp
, 并precipitation
包含几年和地区的数据:
year month alltime daytime region temp precipitation
2000 1 True False saint louis 21.3105241935484 0.03
2000 1 False True saint louis 22.7246627565982 0.025
2000 1 False False saint louis 20.0136559139785 0.012
2000 2 True False saint louis 22.1646408045977 0.013
2000 2 False True saint louis 23.557868338558 0.07
2000 2 False False saint louis 20.8678927203065 0.012
2000 3 True False saint louis 22.9311155913978 0.031
2000 3 False True saint louis 24.9204398826979 0.016
2000 3 False False saint louis 21.011541218638 0.0121
2000 4 True False saint louis 22.5921805555556 0.019
2000 4 False True saint louis 24.3710303030303 0.054
2000 4 False False saint louis 20.8877777777778 0.043
2000 5 True False saint louis 21.4352016129032 0.032
2000 5 False True saint louis 22.8382404692082 0.023
我想获得一个新的 df ,其中包含年份和地区作为列,其中计算出特定月份(第 6 个月、第 7 个月和第 8 个月)的温度和降水平均值:
year region temp precipitation
2000 saint louis 22.123 321.23
2000 diff region 24.643 673.12
2001 saint louis 21.433 134.27
我尝试了以下代码:
a = weather.groupby(["region","year"]).mean("month")
但这给出了所有 12 个月的平均值:
region year month temp prep
dakar 2000 6.5 24.788 0.028
2001 6.5 23.533 0.032
解决方案
那么您所缺少的是您的数据子集,其中仅包含您需要的月份。因此,您可以创建一个包含要包含的月份的新数据框,然后使用groupby.agg
:
months = ['6','7','8']
temp = df[df['month'].isin(months)]
res = (df.groupby(['region','year']).agg({'temp':'mean','precipitation':'mean'})).reset_index()
会给你:
region year temp precipitation
0 saint louis 2000 22.259055 0.028007
1 saint louis 2001 22.838240 0.023000
仅供参考,我在样本中添加了一些额外的数据,因为在您发布的数据中,您只有 1 年和 1 个地区。
推荐阅读
- php - Codeignigter 控制器不返回 JSON
- delphi - 如何为通过批量电子邮件 API 发送的电子邮件附件生成多部分/表单数据
- sql-server - SSIS - 连接管理器的最佳实践 - 由参数组成?
- php - Wordpress Shortcode 循环遍历数据并将当前循环记录发送到自定义插件中的其他 Shortcode
- .net - 如何正确设置 dotnet 核心类库以在 Azure DevOps 中发布到 NuGet 源?
- javascript - 如何按对象数组过滤?
- css - 使用 codepen 创建烟花动画的问题
- google-apps-script - 用于将数组从多个工作表复制到单个状态摘要工作表的 Google Apps 脚本
- tensorflow - bazel tensorflow protoc 版本不匹配
- linux - 期望脚本 - 期望 2 个条件并从 bluetoothctl 提取 MAC 添加