#python #pandas
Вопрос:
Это мой фрейм данных:
Date Month
04/21/2019 April
07/03/2019 July
01/05/2018 January
09/23/2019 September
Я хочу добавить столбец под названием финансовый год. Новый финансовый год начинается 1 июля каждого года и заканчивается в последний день июня. Так, например, если год 2019, а месяц апрель, то это все еще 2019 финансовый год. Однако, если год 2019, но месяц-это что-то после июня, это будет 2020 финансовый год. Результирующий фрейм данных должен выглядеть следующим образом:
Date Month FY
04/21/2019 April FY19
07/03/2019 July FY20
01/05/2019 January FY19
09/23/2019 September FY20
Как мне этого добиться?
Ответ №1:
Один из способов использования pandas.Dateoffset
:
df["FY"] = (pd.to_datetime(df["Date"])
pd.DateOffset(months=6)).dt.strftime("FY%Y")
print(df)
Выход:
Date Month FY
0 04/21/2019 April FY2019
1 07/03/2019 July FY2020
2 01/05/2019 January FY2019
3 09/23/2019 September FY2020
Ответ №2:
попробуйте через pd.PeriodIndex()
pd.to_datetime()
:
df['Date']=pd.to_datetime(df['Date'])
df['FY']=pd.PeriodIndex(df['Date'],freq='A-JUN').strftime("FY%y")
выход:
Date Month FY
0 2019-04-21 April FY19
1 2019-07-03 July FY20
2 2019-01-05 January FY19
3 2019-09-23 September FY20
Примечание: Я предлагаю вам сначала преобразовать 'Date'
столбец в дату и время, а затем выполнить с ним какие-либо операции, или, если вы не хотите конвертировать 'Date'
столбец, используйте приведенный выше код за один шаг.:
df['FY']=pd.PeriodIndex(pd.to_datetime(df['Date']),freq='A-JUN').strftime("FY%y")