熊猫的datetime函数获取季度末的日期

时间:2020-03-06 03:26:31

标签: python pandas dataframe datetime

我有一个数据框,其中包含一年四分之一的列df.period 并且我想使用此代码将该列转换为DatetimeIndex

# path is my filepath
df = pd.read_excel(path, skiprows =[1,2,3,4]) # unread first four rows
idx = pd.to_datetime(df.period)
df = df.set_index(pd.DatetimeIndex(idx))

该代码对我来说效果很好;但是,它将返回每个季度的第一个日期PeriodIdx

+------------+--------+
| PeriodIdx  | Period |
+------------+--------+
| 2000-01-01 | 2000Q1 |
| 2000-04-01 | 2000Q2 |
| ...        | ...    |
+------------+--------+

但是我的目标输出是获取每个季度的结束日期,如下所示。

+------------+--------+
| PeriodIdx  | Period |
+------------+--------+
| 2000-03-31 | 2000Q1 |
| 2000-06-30 | 2000Q2 |
| ...        | ...    |
+------------+--------+

请参阅R Forcing end of quarter date for as.Date(as.yearqtr())中的解决方案,该季度的最后一个日期是否有任何Pandas函数?

1 个答案:

答案 0 :(得分:1)

一种解决方案是添加偏移量:

idx = pd.DatetimeIndex(pd.to_datetime(df.period) + pd.offsets.MonthEnd(3),
                       name='PeriodIdx')

df.set_index(idx)

输出:

            Period
PeriodIdx         
2000-03-31  2000Q1
2000-06-30  2000Q2