Pandas функция datetime для получения даты в конце квартала - PullRequest
3 голосов
/ 06 марта 2020

У меня есть фрейм данных, который содержит столбец года-квартала df.period, и я хочу преобразовать этот столбец в DatetimeIndex с этим кодом.

# path is my filepath
df = pd.read_excel(path, skiprows =[1,2,3,4]) # unread first four rows
idx = pd.to_datetime(df.period)
df = df.set_index(pd.DatetimeIndex(idx))

Код работает хорошо для меня; тем не менее, он возвращает первую дату каждого квартала в PeriodIdx.

+------------+--------+
| PeriodIdx  | Period |
+------------+--------+
| 2000-01-01 | 2000Q1 |
| 2000-04-01 | 2000Q2 |
| ...        | ...    |
+------------+--------+

Но моя цель - получить дату окончания каждого квартала, как показано ниже.

+------------+--------+
| PeriodIdx  | Period |
+------------+--------+
| 2000-03-31 | 2000Q1 |
| 2000-06-30 | 2000Q2 |
| ...        | ...    |
+------------+--------+

Обратитесь к решению в R Принудительная дата окончания квартала для as.Date (as.yearqtr ()) , есть ли какая-либо функция Pandas для последней даты квартала?

1 Ответ

1 голос
/ 06 марта 2020

Решением является добавление смещения:

idx = pd.DatetimeIndex(pd.to_datetime(df.period) + pd.offsets.MonthEnd(3),
                       name='PeriodIdx')

df.set_index(idx)

Вывод:

            Period
PeriodIdx         
2000-03-31  2000Q1
2000-06-30  2000Q2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...