将多级pandas索引转换为datetime

时间:2016-02-22 00:28:00

标签: python datetime pandas

我有这个人。数据帧:

          col_a     col_b  
4 15  69.717679  0.09701  
  16  69.717679  0.09701  
  17  69.717679  0.09701  
  18  69.717679  0.09701  
  19  69.717679  0.09701  

它有一个多索引,第一级表示月份(4),下一级表示月份日期(1..31)。如何将多级索引转换为日期时间索引?年份值为2013年。

我试过了:

pd.to_datetime(df_past.index.levels[1] + df_past.index.levels[0] + 2013, format="%d%m%Y")

但得到错误:

*** ValueError: cannot evaluate a numeric op with unequal lengths

2 个答案:

答案 0 :(得分:4)

要获取索引级别的值,您需要.levels而不是pd.to_datetime(2013 * 10000 + df_past.index.get_level_values(0) * 100 + df_past.index.get_level_values(1), format="%Y%m%d")

astype(str)

此外,如果将它们添加为整数值,则需要乘以10000/100才能获得正确的格式。另一种方法是{{1}}每个,然后只需添加(连接)就可以了。

答案 1 :(得分:1)

以下列表comprehension / zip方法将为日期时间对象提供日期。

import datetime as dt

new_index = [dt.datetime(2013, month, day) 
             for month, day in zip(*[df.index.get_level_values(i) for i in (0, 1)])]