使用 .CSV 文件时,如何在 Python Pandas 中按月顺序对月份进行排序?

对于每个名称/位置,计算每月的平均降雪量。将结果保存在两个单独的 .csv 文件中(一个用于 2016,另一个用于 2017)将文件命名为 average2016.csv 和 average2017.csv。我使用 Python 3.8 和 Panadas。我用这段代码完成了这个:


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



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

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


df_2016 = df16.groupby(['NAME', 'Month'])['SNOW'].mean().reset_index()

df_2017 = df17.groupby(['NAME', 'Month'])['SNOW'].mean().reset_index()


df_2016[['NAME', 'Month', 'SNOW']].to_csv('average2016.csv')

df_2017[['NAME', 'Month', 'SNOW']].to_csv('average2017.csv')

这张图片显示了我 2016 年的平均结果。

http://img.mukewang.com/633d43a50001c54612170574.jpg

但是,我遇到的问题是月份不是按月顺序排列的。我希望他们从 1 月到 12 月去每个地点。示例:我希望名称:ADA 0.7 SE,MI US Month's 是 May 然后是 June。我怎么能做到这一点?还有没有办法摆脱第一个编号的列?



慕妹3242003
浏览 198回答 1
1回答

拉风的咖菲猫

您可以sort在 DATE 列上。但是你需要记住sort=False在你的 groupby 中做,否则它将使用字符串排序在那里排序。此外,您每年的重复代码可以替换为单个 groupby,添加year到分组键中。然后,您将分别写入不同的文件,index=False这就是您摆脱索引的方式。import numpy as npimport pandas as pddf = pd.read_csv('filteredData.csv')df['DATE'] = pd.to_datetime(df['DATE'])df['year'] = df['DATE'].dt.year         # Datetime has this attribute already df = df.sort_values(['NAME', 'DATE'])   # Output will be in order within each Namedf = (df[df.year.between(2016,2017)]    # Only 2016 and 2017        .groupby(['year', 'NAME', 'Month'], sort=False)['SNOW']        .mean().reset_index())for year,gp in df.groupby('year'):      # Write files separately by year    gp[['NAME', 'Month', 'SNOW']].to_csv(f'average{year}.csv', index=False)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python