将pandas的多级索引折叠为单个索引

5

我有一个多重索引的Pandas数据框,看起来像这样:

enter image description here

如何将三层索引合并为一个索引?也就是说,我想将(1987,1,2)转换为pd.datetime(1987,1,2)。我希望使用df.index.map进行矢量化处理。以下是可以创建数据框顶部的代码:
df = pd.DataFrame(
    {'3 months': [1, 2, 3, 4, 5]},
    index=[
        [1987, 1987, 1987, 1987,1987],
        [1,1,1,1,1],
        [2,5,6,7,8]
    ]
)
2个回答

5

使用 pd.Index.map 的最简单解决方案

df.set_index(df.index.map(lambda t: pd.datetime(*t)))

            3 months
1987-01-02         1
1987-01-05         2
1987-01-06         3
1987-01-07         4
1987-01-08         5

我刚刚几分钟前看到了你的类似问题的解决方案……谢谢! - user217285
没问题,很高兴能帮忙 (-: - piRSquared

3
将传递到数据框中。
df.index=pd.to_datetime(pd.DataFrame(df.index.values.tolist(), columns=['year','month','day']))
df
Out[669]: 
            3 months
1987-01-02         1
1987-01-05         2
1987-01-06         3
1987-01-07         4
1987-01-08         5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接