在pandas中使用PeriodIndex与DateTimeIndex?

时间:2018-06-01 01:19:06

标签: python python-3.x pandas

我正在处理一些财务数据,这些数据被组织为带有MultiIndex的df,其中包含自动收报机和日期以及包含退货的列。我想知道是否应该将索引转换为PeriodIndex而不是DateTimeIndex,因为返回确实超过了一段时间而不是瞬间。除了哲学论点之外,PeriodIndex提供的哪些实用功能在这个特定用例vs DateTimeIndex中可能有用?

1 个答案:

答案 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")