Voglio convertire una serie storica data per la stagione, ad esempio per mesi 3, 4, 5 voglio sostituirli con 2 (primavera); per mesi 6, 7, 8 voglio sostituirli con 3 (estate), ecc
Così, ho questa serie
id
1 2011-08-20
2 2011-08-23
3 2011-08-27
4 2011-09-01
5 2011-09-05
6 2011-09-06
7 2011-09-08
8 2011-09-09
Name: timestamp, dtype: datetime64[ns]
e questo è il codice che ho cercato di usare, ma senza alcun risultato.
# Get seasons
spring = range(3, 5)
summer = range(6, 8)
fall = range(9, 11)
# winter = everything else
month = temp2.dt.month
season=[]
for _ in range(len(month)):
if any(x == spring for x in month):
season.append(2) # spring
elif any(x == summer for x in month):
season.append(3) # summer
elif any(x == fall for x in month):
season.append(4) # fall
else:
season.append(1) # winter
e
for _ in range(len(month)):
if month[_] == 3 or month[_] == 4 or month[_] == 5:
season.append(2) # spring
elif month[_] == 6 or month[_] == 7 or month[_] == 8:
season.append(3) # summer
elif month[_] == 9 or month[_] == 10 or month[_] == 11:
season.append(4) # fall
else:
season.append(1) # winter
Né soluzione funziona, in particolare nella prima implementazione ricevo un errore:
ValueError: Il valore di verità di un array con più di un elemento è ambigua. Usa a.any () o A.All ()
Mentre nella seconda è una grande lista con gli errori. Tutte le idee per favore? Grazie