Сортировка данных по дню и месяцу (без учета года) python pandas - PullRequest
1 голос
/ 20 мая 2019

Я нашел много вопросов, похожих на мои, но ни один из них точно не ответил ( этот ближе всего подходит, но он фокусируется на рубине).

У меня есть пандас DataFrame, подобный этому:

import pandas as pd
import numpy as np

df = pd.DataFrame({'Date': pd.date_range('2014-10-03', '2015-10-02', freq='1D'), 'Variable': np.random.randn(365)})
df.head()

Out[272]: 
        Date  Variable
0 2014-10-03  0.637167
1 2014-10-04  0.562135
2 2014-10-05 -1.069769
3 2014-10-06  0.556997
4 2014-10-07  0.253468

Я хочу отсортировать данные с 1 января по 31 декабря, игнорируя компонент года столбца Date.Предпосылкой является то, что я хочу отслеживать изменения в Variable за год, но мой период начинается и заканчивается в октябре.

Я подумал о создании отдельного столбца для месяца и года, а затем сортировать по ним.Но я не уверен, как это сделать «правильно» и кратко.

Ожидаемый результат:

  Date   Variable
0 01-01  0.637167  # (Placeholder-values)
1 01-02  0.562135
2 01-03 -1.069769
3 01-04  0.556997
4 01-05  0.253468

Ответы [ 2 ]

2 голосов
/ 20 мая 2019

На пути от argsort

yourdf=df.loc[df.Date.dt.strftime('%m%d').astype(int).argsort()]
1 голос
/ 20 мая 2019

Вы можете создать столбцы day и month, просто выполнив следующие действия:

df = pd.DataFrame(data=pd.date_range('2014-10-03', '2015-10-02', freq='1D'), columns=['date'])
df['day'] = df['date'].apply(lambda x: x.day)
df['month'] = df['date'].apply(lambda x: x.month)

Вы можете сделать его еще более компактным. Но быстрый анализ, вы можете использовать выше.

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