【问题标题】:Converting multilevel pandas index to datetime将多级熊猫索引转换为日期时间
【发布时间】:2016-06-03 07:23:54
【问题描述】:

我知道了。数据框:

          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

【问题讨论】:

    标签: python datetime pandas


    【解决方案1】:

    要获取索引级别的值,您需要.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) 每个人,然后只需添加(连接)即可。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我认为您的意思是使用datetime.datetime 而不是pd.to_datetime
      猜你喜欢
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 2018-07-04
      • 1970-01-01
      • 1970-01-01
      • 2018-12-08
      相关资源
      最近更新 更多