Home > Software design >  change season in pandas
change season in pandas

Time:10-18

I have a dataset like this

Month Season
1 1
2 1
3 2
4 2
5 2
6 3
7 3
8 3
9 4
10 4
11 4
12 1

Now I would like to change 1 to winter, 2 to spring, 3 to summer and 4 to autumn in the season column.

I was struggling.

I want this dataset after

Month Season
1 winter
2 winter
3 spring
4 spring
5 spring
6 summer
7 summer
8 summer
9 autumn
10 autumn
11 autumn
12 winter

I gave the following code

df.replace({'Season' : { 1 : winter, 2 : spring, 3: summer, 4: autumn}})

But got an error

The error is could not find winter???

CodePudding user response:

# create a dictionary for season
d={1:'winter', 2 : 'spring', 3 : 'summer', 4 : 'autumn'}

# map season value using dictionary
df['Season']=df['Season'].map(d)
df
Month   Season
0   1   winter
1   2   winter
2   3   spring
3   4   spring
4   5   spring
5   6   summer
6   7   summer
7   8   summer
8   9   autumn
9   10  autumn
10  11  autumn
11  12  winter

Alternately, for completeness sake. you can update your solution of using replace as follows (as others have commented here), which results in the same result


df.replace({'Season' : { 1 : 'winter', 2 : 'spring', 3: 'summer', 4: 'autumn'}})

CodePudding user response:

Put the seasons like winter, summer etc in quotes. For example, winter becomes "winter"

The problem is that winter is treated as a variable, not a string.

This should help with the winter not found error.

CodePudding user response:

Would suggest apply approach:

def month_to_season(row):
    if (row   1) // 3 == 1:
        return 'spring'
    if (row   1) // 3 == 2:
        return'summer'
    if (row   1) // 3 == 3:
        return 'autumn'
    return 'winter'


df['Season'] = df['Month'].apply(month_to_season)
  • Related