【问题标题】:Difference between two year-quarter in quarter两年季度季度之间的差异
【发布时间】:2022-01-12 04:49:20
【问题描述】:

我有一个日期列。我想获得每个日期的财政季度年度与最大财政季度年度之间的差异。我就是这样做的:

date = pd.Series(['2019-01-01', '2019-03-01', '2019-07-01', '2020-03-01'])
date = pd.to_datetime(date)
year_quarter = pd.PeriodIndex(date, freq='Q-JAN')
max_year_quarter = year_quarter.max()
print(year_quarter)
print(max_year_quarter)

输出:

year_quarter
PeriodIndex(['2019Q4', '2020Q1', '2020Q2', '2021Q1'], dtype='period[Q-JAN]', freq='Q-JAN')
max_year_quarter
Period('2021Q1', 'Q-JAN')

如果我运行max_year_quarter - max_year_quarter,输出将是:

Index([<5 * QuarterEnds: startingMonth=1>, <4 * QuarterEnds: startingMonth=1>,
       <3 * QuarterEnds: startingMonth=1>, <0 * QuarterEnds: startingMonth=1>],
      dtype='object')

而预期的输出是:

[5, 4, 3, 0]

这是每个日期和 max_year_quarter 之间的季度数。感谢您的帮助。

【问题讨论】:

    标签: python pandas timestamp


    【解决方案1】:

    将Period.ordinal 用于整数repr 并通过将PeriodIndex 的值转换为整数来进行减法:

    Difference_in_Quarter = max_year_quarter.ordinal - year_quarter.astype(int)
    print (Difference_in_Quarter)
    Int64Index([5, 4, 3, 0], dtype='int64')
    

    【讨论】:

    • 这也是一个很好的解决方案。感谢@jezreal
    【解决方案2】:

    这将导致季度数:

    Difference = max_year_quarter - year_quarter
    Difference_in_Quarter = (max_year_quarter - year_quarter).map(lambda x: x.n)
    

    输出:

    0    5
    1    4
    2    3
    3    0
    dtype: int64
    

    【讨论】:

    • 带索引也可以使用map (max_year_quarter - year_quarter).map(lambda x: x.n)
    猜你喜欢
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 2019-02-05
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多