python - Pandas 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 函数?
解决方案
一种解决方案是添加偏移量:
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
推荐阅读
- qt - QML 中的材质样式对话框
- python - KerasRegression 模型中的“TypeError:无法腌制 NotImplementedType 对象”
- python - 使用带有 NLTK 的块标签(不是 NER)在句子中创建关系 | 自然语言处理
- firebase - Firebase 分析 UserDeletion.userDeletionRequest 403
- javascript - 如何在 textarea 中获取用户的输入,并在 JS 中通过 textContent 显示写入的字符串?
- java - 将 Java 字符串转换为日期
- google-apps-script - 使用 Google Apps 脚本将图像插入 Google 幻灯片时,如何设置图像标题和说明?
- angular - 如何将数组转换为查询参数的对象?
- javascript - 在AngularJS中将值从服务传递到控制器
- powershell-4.0 - Powershell 使用 Set-Content 保留字节顺序标记(搜索/替换脚本)