如何通过两个日期列对熊猫数据框进行排序

时间:2020-04-22 13:23:42

标签: python pandas dataframe

我有一个这样的熊猫数据框:

   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

我现在想首先对年列进行排序,然后对月列进行排序,如下所示:

   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

我该怎么做?

3 个答案:

答案 0 :(得分:5)

IIUC让我们尝试to_datetime + argsort

sameAs

答案 1 :(得分:5)

您可以将column_Month列更改为CategoricalDtype

Months = pd.CategoricalDtype([
    'January', 'February', 'March', 'April', 'May', 'June',
    'July', 'August', 'September', 'October', 'November', 'December'
], ordered=True)

df.astype({'column_Month': Months}).sort_values(['column_year', 'column_Month'])

    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

答案 2 :(得分:1)

df=df.sort_values(by=["column_year", "column_Month"], ascending=[True, True])