gpt4 book ai didi

python - 在 python 中将年/季度日期格式更改为上一个时期

转载 作者:行者123 更新时间:2023-12-01 02:23:52 26 4
gpt4 key购买 nike

我有一个数据集,其中包含时间序列的每月观察结果。我想要做的是将日期时间转换为年/季度格式,然后提取第一个值 DATE[0] 作为上一季度。例如2006-10-31属于2006年的第4季度。但我想将其更改为2006年第3季度。为了提取后续值,我将仅使用每个季度的最后一个值。因此,对于 2006 年第 4 季度,我将仅保留 DATE[2] 中的 BBGN、SSD 和 QQ4567 值。同样,对于 2007Q1,我将仅保留 DATE[5] 值,依此类推。

原始数据集:

               DATE                BBGN    SSD             QQ4567  
0 2006-10-31 00:00:00 1.210 22.022 9726.550
1 2006-11-30 00:00:00 1.270 22.060 9891.008
2 2006-12-31 00:00:00 1.300 22.080 10055.466
3 2007-01-31 00:00:00 1.330 22.099 10219.924
4 2007-02-28 00:00:00 1.393 22.110 10350.406
5 2007-03-31 00:00:00 1.440 22.125 10480.888

处理日期后

       DATE          BBGN    SSD             QQ4567  
0 2006Q3 1.210 22.022 9726.550
2 2006Q4 1.300 22.080 10055.466
5 2007Q1 1.440 22.125 10480.888

到目前为止我采取的步骤是:

将值从 yyyy-mm-dd hh 格式转换为 yyyyQQ 格式

DF['DATE'] = pd.to_datetime(DF['DATE']).dt.to_period('Q')

我明白了

    DATE          BBGN    SSD             QQ4567  
0 2006Q4 1.210 22.022 9726.550
1 2006Q4 1.270 22.060 9891.008
2 2006Q4 1.300 22.080 10055.466
3 2007Q1 1.330 22.099 10219.924
4 2007Q1 1.393 22.110 10350.406
5 2007Q1 1.440 22.125 10480.888

下一步是从每个季度提取最后的值。但因为我总是想保留第一行,所以我将从函数中排除 DATE[0]

quarterDF = DF.iloc[1:,].drop_duplicates(subset='DATE', keep='last')

现在,我的问题是如何将 DATE[0] 中的值更改为始终为上一季度。所以,从 2006Q4 到 2006Q3。另外,如果DATE[0]是2007Q1,这将如何工作,我可以将其更改为2006Q4吗?

最佳答案

我的建议是创建一个新的 DATE 列,其中包含 3 个月前的一天。像这样

import pandas as pd
df = pd.DataFrame()
df['Date'] = pd.to_datetime(['2006-10-31', '2007-01-31'])
one_quarter = pd.tseries.offsets.DateOffset(months=3)
df['Last_quarter'] = df.Date - one_quarter

这会给你

    Date    Last_quarter
0 2006-10-31 2006-07-31
1 2007-01-31 2006-10-31

然后您可以执行与上述 Last_quarter 相同的过程

关于python - 在 python 中将年/季度日期格式更改为上一个时期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47633468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com