Python Pandas: получить финансовый квартал от финансового года и месяца (для Великобритании)
У меня есть датафрейм с двумя полезными столбцами 1) финансовый год, 2) дата. Я хочу добавить новый столбец, который показывает финансовый квартал.
К вашему сведению - финансовый год в Великобритании длится с 1 апреля по 31 марта
мои данные выглядят так:
fiscal year date
FY15/16 2015-11-01
FY14/15 2014-10-01
FY15/16 2016-02-01
Я хочу, чтобы это выглядело так:
fiscal year date Quarter
FY15/16 2015-11-01 q3
FY14/15 2014-10-01 q3
FY15/16 2016-02-01 q4
Действительно надеюсь, что я получил правильные кварталы!
Код ниже работает, но я верю, что он возвращает американские финансовые кварталы, но я хочу Великобритании.
df['Quater'] = df['Date'].dt.quarter
2 ответа
import pandas as pd
df = pd.DataFrame({'date': ['2015-11-01', '2014-10-01', '2016-02-01'],
'fiscal year': ['FY15/16', 'FY14/15', 'FY15/16']})
df['Quarter'] = pd.PeriodIndex(df['date'], freq='Q-MAR').strftime('Q%q')
print(df)
доходность
date fiscal year Quarter
0 2015-11-01 FY15/16 Q3
1 2014-10-01 FY14/15 Q3
2 2016-02-01 FY15/16 Q4
Квартальная частота по умолчанию Q
эквивалентно Q-DEC
,
In [60]: pd.PeriodIndex(df['date'], freq='Q')
Out[60]: PeriodIndex(['2015Q4', '2014Q4', '2016Q1'], dtype='int64', freq='Q-DEC')
Q-DEC
указывает квартальные периоды, последний квартал которых заканчивается в последний день декабря.Q-MAR
указывает квартальные периоды, последний квартал которых заканчивается в последний день марта.
In [86]: pd.PeriodIndex(df['date'], freq='Q-MAR')
Out[86]: PeriodIndex(['2016Q3', '2015Q3', '2016Q4'], dtype='int64', freq='Q-MAR')
Если вы работаете с этим форматом (дд/мм/гггг), как, например, в Великобритании, мне помогло следующее:
df['Fiscal UK quarters'] = pd.to_datetime(df['Date'].values.tolist(), dayfirst=True).to_period(freq='Q-MAR')