我的数据集的季度观察结果显示为200101(2001年第1季度)至201504(2015年第4季度)。我想把它们变成适当的熊猫日期指数。
200101 -> 2001-03-31
...
201504 -> 2015-12-31
年/月我经常使用
import datetime as dt
dates = [dt.datetime.strptime(str(d), '%Y%m') for d in series['date']]
series['date'] = pd.date_range(dates[0], dates[-1], freq='M')
不幸的是,'%Y%q'表示法是不允许的。关于如何优雅地阅读上述季度日期的任何建议?
答案 0 :(得分:1)
您可以将这些字符串转换为PeriodIndex(freq='Q')
,然后(如果需要)转换为timestamp(freq='M')
演示:
In [272]: df
Out[272]:
qt
0 200101
1 201504
In [273]: pd.PeriodIndex(df.qt.astype(str).str.replace(r'(\d{4})[0]?(\d{1})', r'\1q\2'),
freq='Q') \
.to_timestamp(freq='M')
Out[273]: DatetimeIndex(['2001-01-31', '2015-10-31'], dtype='datetime64[ns]', name='qt', freq=None)