Agrupar datos por temporadas utilizando python y pandas.

Quiero usar Pandas y Python para recorrer mi archivo .csv y agrupar los datos por temporadas, calculando la media para cada temporada en el año. Actualmente el guión trimestral hace enero-marzo, abril-junio, etc. Quiero que las temporadas se correspondan con los meses de – 11: ‘Invierno’, 12: ‘Invierno’, 1: ‘Invierno’, 2: ‘Primavera’, 3: ‘ Primavera ‘, 4:’ Primavera ‘, 5:’ Verano ‘, 6:’ Verano ‘, 7:’ Verano ‘, \ 8:’ Otoño ‘, 9:’ Otoño ‘, 10:’ Otoño ‘

Tengo los siguientes datos:

Date,HAD 01/01/1951,1 02/01/1951,-0.13161201 03/01/1951,-0.271796132 04/01/1951,-0.258977158 05/01/1951,-0.198823057 06/01/1951,0.167794502 07/01/1951,0.046093808 08/01/1951,-0.122396694 09/01/1951,-0.121824587 10/01/1951,-0.013002463 

Este es mi código hasta ahora:

 # Iterate through a list of files in a folder looking for .csv files for csvfilename in glob.glob("C:/Users/n-jones/testdir/output/*.csv"): # Allocate a new file name for each file and create a new .csv file csvfilenameonly = "RBI-Seasons-Year" + path_leaf(csvfilename) with open("C:/Users/n-jones/testdir/season/" + csvfilenameonly, "wb") as outfile: # Open the input csv file and allow the script to read it with open(csvfilename, "rb") as infile: # Create a pandas dataframe to summarise the data df = pd.read_csv(infile, parse_dates=[0], index_col=[0], dayfirst=True) mean = df.resample('Q-SEP', how='mean') # Output to new csv file mean.to_csv(outfile) 

Espero que esto tenga algún sentido.

¡Gracias de antemano!

Parece que solo necesitas un dict de búsqueda y un groupby. El código de abajo debería funcionar.

 import pandas as pd import os import re lookup = { 11: 'Winter', 12: 'Winter', 1: 'Winter', 2: 'Spring', 3: 'Spring', 4: 'Spring', 5: 'Summer', 6: 'Summer', 7: 'Summer', 8: 'Autumn', 9: 'Autumn', 10: 'Autumn' } os.chdir('C:/Users/n-jones/testdir/output/') for fname in os.listdir('.'): if re.match(".*csv$", fname): data = pd.read_csv(fname, parse_dates=[0], dayfirst=True) data['Season'] = data['Date'].apply(lambda x: lookup[x.month]) data['count'] = 1 data = data.groupby(['Season'])['HAD', 'count'].sum() data['mean'] = data['HAD'] / data['count'] data.to_csv('C:/Users/n-jones/testdir/season/' + fname)