Ale*_*lex 11 python python-3.x pandas
我正在处理一些组织为 df 的财务数据,MultiIndex其中包含股票代码和日期以及包含回报的列。我想知道是否应该将索引转换为 aPeriodIndex而不是 aDateTimeIndex因为回报实际上是在一段时间内而不是瞬间。除了哲学论点之外,还有哪些实用功能PeriodIndex在这个特定用例中可能有用DateTimeIndex?
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)
Run Code Online (Sandbox Code Playgroud)
通过以下代码可以获取每月最少数据
dfg = df.groupby([df.index.year, df.index.month]).min()
Run Code Online (Sandbox Code Playgroud)
其索引是 MultiIndex
dfg.index
MultiIndex([(2017, 1),
...
(2020, 1),
(2020, 2)],
names=['peak_time', 'peak_time'])
Run Code Online (Sandbox Code Playgroud)
不,我将其转换为 periodIndex:
dfg["date"] = pd.PeriodIndex (dfg.index.map(lambda x: "{0}{1:02d}".format(*x)),freq="M")
Run Code Online (Sandbox Code Playgroud)