pandas 多日期索引 [英] Pandas multi index to datetime
问题描述
如何将以下多重索引转换为datetime对象并将其设置为新索引?
How do I convert the following multiindex to datetime object and set that as the new index?
df_gauge_mean.index
Out[376]:
MultiIndex(levels=[[2018, 2019], [1, 12], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]],
labels=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]],
names=[u'Year', u'Month', u'Day'])
我想到的一种方法是为3个索引级别创建新列,然后使用pd.to_datetime(["Year","Month","Day"]).有更直接的方法可以做到这一点吗?在其他地方以另一种方式https://stackoverflow.com/questions/26505140/convert-pandas-multi-index-to-pandas-timestamp
询问了相同的问题,但尚未有人回答.
One way I can think of doing it would be to make new columns for the 3 index levels and then use pd.to_datetime(["Year", "Month", "Day"]). Is there a more direct way to do this? The same question is asked elsewhere in another way https://stackoverflow.com/questions/26505140/convert-pandas-multi-index-to-pandas-timestamp
but no one one has answered it yet.
推荐答案
由于您没有发布多重索引,因此我们首先需要对其进行转换
Since you did not post your multiple index , first we need convert it
s="MultiIndex(levels=[[2018, 2019], [1, 12], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]],labels=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]], names=[u'Year', u'Month', u'Day'])"
idx=eval(s, {}, {'MultiIndex': pd.MultiIndex})
pd.to_datetime(idx.to_frame())
Out[761]:
Year Month Day
2018 12 1 2018-12-01
2 2018-12-02
3 2018-12-03
4 2018-12-04
5 2018-12-05
6 2018-12-06
这篇关于 pandas 多日期索引的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!