Вы можете при необходимости преобразовать столбец DATE
в дату-время по to_datetime
, а затем создать столбец периодов месяцев по Series.dt.to_period
последующую сортировку по нескольким столбцам по DataFrame.sort_values
:
np.random.seed(2020)
rng = pd.date_range('1989-10-01', periods=50)
df = pd.DataFrame({'DATE (Month, Day, Year)': rng,
'STREAMFLOW (CFS)': np.random.randint(1000, size=50)})
print (df.head(10))
DATE (Month, Day, Year) STREAMFLOW (CFS)
0 1989-10-01 864
1 1989-10-02 392
2 1989-10-03 323
3 1989-10-04 630
4 1989-10-05 707
5 1989-10-06 91
6 1989-10-07 637
7 1989-10-08 643
8 1989-10-09 583
9 1989-10-10 952
#already datetimes
#df['DATE (Month, Day, Year)'] = pd.to_datetime(df['DATE (Month, Day, Year)'], dayfirst=True)
df['per'] = df['DATE (Month, Day, Year)'].dt.to_period('m')
df = df.sort_values(['per', 'STREAMFLOW (CFS)', ], ascending=[True, False])
print (df.head(10))
DATE (Month, Day, Year) STREAMFLOW (CFS) per
29 1989-10-30 980 1989-10
14 1989-10-15 970 1989-10
20 1989-10-21 958 1989-10
9 1989-10-10 952 1989-10
13 1989-10-14 920 1989-10
22 1989-10-23 870 1989-10
0 1989-10-01 864 1989-10
28 1989-10-29 806 1989-10
15 1989-10-16 777 1989-10
4 1989-10-05 707 1989-10