python - 在 Pandas 中使用 PeriodIndex 与 DateTimeIndex ?

标签 python python-3.x pandas

我正在处理一些组织为带有 MultiIndex 的 df 的财务数据。包含股票代码和日期以及包含返回的列。我想知道是否应该将索引转换为 PeriodIndex而不是 DateTimeIndex因为返回实际上是在一段时间内而不是瞬间。除了哲学论证之外,还有哪些实用功能PeriodIndex提供在这个特定用例中可能有用的东西 vs 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)

最低月度数据可通过以下代码获取
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")

关于python - 在 Pandas 中使用 PeriodIndex 与 DateTimeIndex ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50634824/

相关文章:

python - 如何解码 dtype=numpy.string_ 的 numpy 数组?

python - 我想在 PyQt 的某个列中将两个 lineEdit 信息添加到 csv

python - 来自 csv 的 3D Pandas 数据框

python - 如何在 pandas 中包含带有多索引过滤器的条件?

python - 如何阻止 tempfile.NamedTemporaryFile 在临时文件前缀末尾添加随机字符?

python - 如何计算数据框中两列之间的相关系数?

python - 用顺序名称替换字符串?

python - Python 上的高阶函数

python - 替换 pandas 列中的 html 语法/ascii 代码

在 Ubuntu 终端中运行 Scrapy 时出现 Python3 错误 No module name 'attrs'