【问题标题】:How to calculate the average snow amount per month for each NAME/LOCATION and then save the results in a .CSV file in Python?如何计算每个名称/位置的每月平均降雪量,然后将结果保存在 Python 中的 .CSV 文件中?
【发布时间】:2020-04-09 21:42:47
【问题描述】:

对于每个名称/位置,计算每月的平均降雪量。将结果保存在两个单独的 .csv 文件中(一个用于 2016,另一个用于 2017)将文件命名为 average2016.csv 和 average2017.csv。

我正在使用 Python 3.8 和 pandas。

我试过这段代码:

import numpy as np  
import pandas as pd


df = pd.read_csv('filteredData.csv')


df['DATE'] = pd.to_datetime(df['DATE'])
df['year'] = pd.DatetimeIndex(df['DATE']).year
df['month'] = pd.DatetimeIndex(df['DATE']).month


df16 = df[(df.year == 2016)]
df17 = df[(df.year == 2017)]

df_2016 = df16.groupby(df.month).mean()
df_2017 = df17.groupby(df.month).mean()

df_2016.to_csv('average2016.csv', index=False)
df_2017.to_csv('average2017.csv', index=False)

但是,它并没有完全按照我的意愿去做。这给了我所有地点每月的平均降雪量。但是,我需要每个 NAME/LOCATION 每个月的平均降雪量。我如何能够获得每个月每个名称/位置的平均降雪量,然后将结果保存在单独的 .CSV 文件中,2016 年和 2017 年?

【问题讨论】:

  • 将您希望分组的列列表传递给“groupby”函数。
  • groupby 接受列列表。试试df16.groupby(['station', 'month']) 看看你能在哪里找到?
  • 当我尝试将列列表传递给“groupby”函数时,我只能得到相同的原始文件或者只是一个混乱的 SNOW 列

标签: python pandas csv average


【解决方案1】:

如果您想要每个名称/位置每个月的平均降雪量,您必须对这两列进行分组:

df_2016 = df16.groupby(['NAME', 'month']).mean()

【讨论】:

  • 当我尝试这个时,我只在新的 .CSV 文件中看到一个混乱的 SNOW 列。
【解决方案2】:
df.groupby(['month','NAME','LOCATION']).SNOW.mean()

df.groupby(['year','month','NAME','LOCATION']).SNOW.mean()

【讨论】:

  • 当我尝试这个时,我只在新的 .CSV 文件中看到一个混乱的 SNOW 列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多