Сортировка ежедневных данных по месяцам по группам Python - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть данные о ежедневном потоке за 11 лет, как на картинке. Я хочу отсортировать значения потока в порядке убывания для каждого месяца (каждый месяц имеет свой порядок убывания, т. Е. 10-й месяц идет как 107,98,86 ... и 11-й месяц - как 170,154,144, ... но все они в том же кадре данных)

Excel file

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Вы можете при необходимости преобразовать столбец 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
0 голосов
/ 05 апреля 2020

Преобразование столбцов даты в pandas объект даты / времени с использованием

df['Date'] =pd.to_datetime(df.Date)

Затем сортировка по дате

df.sort_values(by='Date')

Более подробный ответ здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...