首页 > 解决方案 > Add categorical season column to dataframe from existing date column

问题描述

I have this dataframe:

print(data)

          date      time month
0   2017-01-10  00:00:00   Jan
1   2017-01-17  00:00:00   Jan
2   2017-01-24  00:00:00   Jan
3   2017-01-31  00:00:00   Jan
4   2017-02-07  00:00:00   Feb
..         ...       ...   ...
220 2021-04-27  00:00:00   Apr
221 2021-05-03  00:00:00   May
222 2021-05-10  00:00:00   May
223 2021-05-17  00:00:00   May
224 2021-05-25  00:00:00   May

How can I add a new column corresponding to the season? ie categorical values Winter, Spring, Summer, Fall so that my new dataframe looks like this:

print(data)

          date      time month  season
0   2017-01-10  00:00:00   Jan  winter
1   2017-01-17  00:00:00   Jan  winter
2   2017-01-24  00:00:00   Jan  winter
3   2017-01-31  00:00:00   Jan  winter
4   2017-02-07  00:00:00   Feb  winter
..         ...       ...   ...
220 2021-04-27  00:00:00   Apr  spring
221 2021-05-03  00:00:00   May  spring
222 2021-05-10  00:00:00   May  spring
223 2021-05-17  00:00:00   May  spring
224 2021-05-25  00:00:00   May  spring

标签: pythonpandas

解决方案


Just create a dictionary mapping, and then use apply, as so -

season_dict = {'January': 'Winter',
               'February': 'Winter',
               'March': 'Spring', 
               'April': 'Spring',
               'May': 'Spring',
               'June': 'Summer',
               'July': 'Summer',
               'August': 'Summer',
               'September': 'Fall',
               'October': 'Fall',
               'November': 'Fall',
               'December': 'Winter'}
df['Season'] = df['Month'].apply(lambda x: season_dict[x])

推荐阅读