Pandas - 如何使用列作为命令中的字符串值

Pandas - How to use a column as the string value in command

我正在尝试在 pandas 中创建一个财政季度列。如果财政年末是三月,我可以用下面的代码来做到这一点:

df['fiscalquarter'] = df['Date'].dt.to_period('Q-MAR')

但是,我想使用数据框中包含月份缩写的列,而不是 'MAR'。我的列值是 JAN、FEB、MAR 等。我如何告诉 pandas 查看该列 (fiscalmonth) 中的值以创建季度?

打印输出(df.head()):

           ID  fiscalmonth        Date  DateSubYear fiscalmonthabr  
5021        1            2  2001-03-29         2001            FEB  
5780        2            2  2001-04-03         2001            FEB  
7024        3            2  2001-05-02         2001            FEB  
7307        4            2  2001-05-11         2001            FEB  
8076        4            2  2001-06-14         2001            FEB

我想看:

           ID fiscalquater 
5021        1       2002Q1   
5780        2       2002Q1   
7024        3       2002Q1   
7307        4       2002Q1  
8076        4       2002Q2

您可以使用:

fiscal_quarter = lambda x: x['Date'].to_period(x['fiscalmonthabr'])
df['fiscalquater'] = df.assign(fiscalmonthabr='Q-' + df['fiscalmonthabr'],
                               Date=pd.to_datetime(df['Date'])) \
                       .apply(fiscal_quarter, axis=1)
print(df)

# Output
      ID  fiscalmonth       Date  DateSubYear fiscalmonthabr fiscalquater
5021   1            2 2001-03-29         2001            FEB       2002Q1
5780   2            2 2001-04-03         2001            FEB       2002Q1
7024   3            2 2001-05-02         2001            FEB       2002Q1
7307   4            2 2001-05-11         2001            FEB       2002Q1
8076   4            2 2001-06-14         2001            FEB       2002Q2