我正在处理一些财务数据,这些数据被组织为带有MultiIndex
的df,其中包含自动收报机和日期以及包含退货的列。我想知道是否应该将索引转换为PeriodIndex
而不是DateTimeIndex
,因为返回确实超过了一段时间而不是瞬间。除了哲学论点之外,PeriodIndex
提供的哪些实用功能在这个特定用例vs DateTimeIndex
中可能有用?
答案 0 :(得分:0)
DateTimeIndex中有一些可用的函数(例如is_month_start,is_quarter_end)在PeriodIndex中不可用。我无法在DateTimeIndex具有所需格式的情况下使用PeriodIndex。例如,如果我需要以yyyy-mm格式表示的每月频率,则使用PeriodIndex。
示例: 假设df的索引为
df.index
'2020-02-26 13:50:00', '2020-02-27 14:20:00',
'2020-02-28 11:10:00', '2020-02-29 13:50:00'],
dtype='datetime64[ns]', name='peak_time', length=1025, freq=None)
每月最低数据可以通过以下代码获取
dfg = df.groupby([df.index.year, df.index.month]).min()
其索引为MultiIndex
dfg.index
MultiIndex([(2017, 1),
...
(2020, 1),
(2020, 2)],
names=['peak_time', 'peak_time'])
不,我将其转换为PeriodIndex:
dfg["date"] = pd.PeriodIndex (dfg.index.map(lambda x: "{0}{1:02d}".format(*x)),freq="M")