如何根据其他列上的不同条件添加新列

2024-05-23 17:43:05 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的数据帧:

Date        Month
04/21/2019  April
07/03/2019  July
01/05/2018  January
09/23/2019  September

我想添加一个名为“财政年度”的列。新的财政年度从每年7月1日开始,到6月最后一天结束。例如,如果年份是2019年,月份是4月,那么仍然是2019财年。然而,如果年份是2019年,但月份是6月之后的任何月份,则将是2020财年。生成的数据帧应如下所示:

 Date        Month      FY
04/21/2019  April      FY19
07/03/2019  July       FY20
01/05/2019  January    FY19
09/23/2019  September  FY20

我如何做到这一点


Tags: 数据datejuly年份月份monthfyapril
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'转换为datetime,然后对其执行任何操作,或者如果您不想转换'Date'列,则在单个步骤中使用上述代码:

df['FY']=pd.PeriodIndex(pd.to_datetime(df['Date']),freq='A-JUN').strftime("FY%y")

使用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

相关问题 更多 >