我有一个多索引的Pandas数据帧,看起来像这样:
如何将三层索引合并为一个索引?也就是说,我想把(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]
]
)
发布于 2018-01-25 05:29:40
使用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
发布于 2018-01-25 05:36:21
传递给数据帧
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
https://stackoverflow.com/questions/48431868
复制相似问题