首页 > 解决方案 > How to sort pandas dataframe by two date columns

问题描述

I have a pandas dataframe like this:

   column_year  column_Month  a_integer_column
0   2014        April         25.326531
1   2014        August        25.544554
2   2015        December      25.678261
3   2014        February      24.801187
4   2014        July          24.990338
...  ...           ...           ...
68  2018        November      26.024931
69  2017        October       25.677333
70  2019        September     24.432361
71  2020        February      25.383648
72  2020        January       25.504831

I now want to sort year column first and then month column, like this below:

   column_year  column_Month  a_integer_column
3   2014        February      24.801187
0   2014        April         25.326531
4   2014        July          24.990338
1   2014        August        25.544554
2   2015        December      25.678261
...  ...           ...            ...
69  2017        October       25.677333
68  2018        November      26.024931
70  2019        September     24.432361
72  2020        January       25.504831
71  2020        February      25.383648

How do i do this?

标签: pythonpandasdataframe

解决方案


Let us try to_datetime + argsort:

df=df.iloc[pd.to_datetime(df.column_year.astype(str)+df.column_Month,format='%Y%B').argsort()]
   column_year column_Month  a_integer_column
3         2014     February         24.801187
0         2014        April         25.326531
4         2014         July         24.990338
1         2014       August         25.544554
2         2015     December         25.678261

推荐阅读