将多级熊猫索引转换为日期时间



我有以下数据帧:

          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

要获取索引级别的值,您需要.get_level_values()而不是.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")

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

以下列表理解/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)])]

最新更新