【问题标题】:How to add a new column based on different conditions on other columns pandas如何在其他列pandas上根据不同条件添加新列
【发布时间】:2021-08-19 12:00:52
【问题描述】:

这是我的数据框:

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

我如何做到这一点?

【问题讨论】:

    标签: python pandas


    【解决方案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' 列,请在a 中使用上面的代码单步:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-01-04
        • 2022-07-20
        • 2020-04-25
        • 2016-02-03
        • 2020-06-09
        • 2017-08-26
        • 2020-09-24
        相关资源
        最近更新 更多