Конвертировать даты в кварталы - PullRequest
0 голосов
/ 22 мая 2018

Я хотел бы преобразовать свой столбец даты в показатель квартала этого конкретного года, скажем, 2018q1 или 2018q2 и т. Д.

Мои данные выглядят так, у меня есть доходность акций один раз в квартал (не отображаетсястолбец возврата здесь) и соответствующая дата, четверть столбца - это то, что я хотел бы получить (или что-то подобное)

data = [{'date': '3/22/18', 'quarter': 1},{'date': '3/22/18', 'quarter': 1}, 
{'date': '6/22/18', 'quarter': 3},{'date': '6/22/18', 'quarter': 3},
{'date': '9/22/18', 'quarter': 2},{'date': '9/22/18', 'quarter': 2}]
df = pd.DataFrame(data, index=['s1', 's2','s1','s2','s1','s2'])

        date  quarter
 s1  3/22/13       2013q1
 s2  3/24/13       2013q1
 s1  6/21/13       2013q2
 s2  6/26/13       2013q2
 s1  9/21/13       2013q3
 s2  9/28/13       2013q3

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

to_datetime:

df.date = pd.to_datetime(df.date)

PeriodIndex

df['quarter'] = pd.PeriodIndex(df.date, freq='Q')

         date quarter
s1 2018-03-22  2018Q1
s2 2018-03-22  2018Q1
s1 2018-06-22  2018Q2
s2 2018-06-22  2018Q2
s1 2018-09-22  2018Q3
s2 2018-09-22  2018Q3
0 голосов

Просто извлеките часть месяца из вашей строки даты.Квартал можно просто получить с помощью month // 4 + 1.

. Поскольку ваши данные представляют собой словарь, ключ которого 'date' представляет собой str формы (\d{1:2})/(\d{1:2})/(\d\d), вы можете получить часть даты «месяц».(первая группа), преобразуйте его в целое число и используйте month // 4 + 1 для получения квартала.

Извлечение части месяца из строки даты можно выполнить с помощью регулярных выражений или даже простого среза строки.Следовательно, квартал колеблется от 1 до 4 и определяется следующим образом:

  • m // 4 равен 0 для 1 <= m <= 3 (Q1)
  • m // 4 равен 1 для 4 <= m <= 6 (Q1)
  • m // 4 равно 2 для 7 <= m <= 9 (Q1)
  • m // 4 равно 3 для 10 <= m <= 12 (Q1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...