python - 将 DataFrame 对象上的 Pandas 日期时间索引转换为级别为 "month"和 "year"的 *MultiIndex*

标签 python python-3.x pandas datetime dataframe

假设我有一个每月 datetime 的数据表指数(以下代码给出了两年,从一月到十二月):

import pandas as pd
import numpy as np
from datetime import datetime
N = 12*2
c = [datetime(1970 + i//12, (i%12)+1, 1) for i in range(N)]
d = pd.DataFrame(np.random.rand(N), index=c)
print(d)

转换 DateTimeIndex 的最佳方法是什么?进入MultiIndex单独的级别 monthyear ?也许有办法用 groupby 做到这一点,但我不确定。

最佳答案

您可以根据yearmonth 构造一个MultiIndex 对象并将其分配给数据框的索引:

import pandas as pd
d.index = pd.MultiIndex.from_arrays([d.index.year, d.index.month])

d.index
# MultiIndex(levels=[[1970, 1971], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]],
#            labels=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]])

d.head()

#                  0
#1970   1   0.657130
#       2   0.047241
#       3   0.984799
#       4   0.868508
#       5   0.678536

关于python - 将 DataFrame 对象上的 Pandas 日期时间索引转换为级别为 "month"和 "year"的 *MultiIndex*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42640166/

相关文章:

python - 创建超链接以通过 python 访问多个 Excel 工作表

python - 使用 python 的子进程处理寻呼机

python - 位掩码在 Python 中如何工作?

python - 如何使用 python 3 turtle 两次

python - 如何使用 RDFLib 导出 RDF 文件中的图形

python - 如何从 Pandas 数据框中提取列表或字典中的非 NA 值

python - 无法使用 Pandas 删除 NaN 值

python - 如何唯一地组合2个列表

python - Sympy "not all arguments converted during string formatting"使用 zeros((n,n))

python-3.x - 在 PySimpleGUI 的打开窗口顶部显示弹出窗口