【问题标题】:In a .CSV file, for each location(NAME) calculate the average snow amount per month and then save the results in two separate .csv files in python?在 .CSV 文件中,为每个位置(名称)计算每月平均降雪量,然后将结果保存在 python 中的两个单独的 .csv 文件中?
【发布时间】:2020-04-10 10:33:27
【问题描述】:

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

我正在使用 Python 3.8 和 pandas。我试过了:

df = pd.read_csv('filteredData.csv')
g = df.groupby([df.DATE.dt.year, df.DATE.dt.month, 'NAME'])['SNOW'].mean().reset_index().sort_values() 
df_2016 = df.loc[df.DATE.dt.year == 2016]
df_2016.to_csv('average2016.csv', index=False)
df_2017 = df.loc[df.DATE.dt.year == 2017]
df_2017.to_csv('average2017.csv', index=False)

但我得到的只是错误。我不知道从哪里开始。

This is a small part of the filteredData.csv

【问题讨论】:

    标签: python pandas csv


    【解决方案1】:

    您的date 字段最初的数据类型为object,因此您需要在调用日期转换函数之前对其进行转换。在将数据集分成两个数据框(每年一个)后,我将groupby 简化为按月分组。

    import numpy as np
    import pandas as pd
    
    df = pd.read_csv('filtered_data.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)
    

    【讨论】:

    • 有没有办法包含位置(名称),以便我可以在新的平均文件中按月对每个位置的平均值进行分组?还有一种方法可以将日期格式化为 dd/mm/yyyy 格式吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 2018-01-29
    相关资源
    最近更新 更多