【问题标题】:Reindex with multiindex and create empty dates使用多索引重新索引并创建空日期
【发布时间】:2021-03-19 10:44:47
【问题描述】:

如何为每个国家/地区创建从 2016-01-01 前 7 天到 2015 年 1 月的空行?我尝试重新索引。我需要保留多索引 df

                   value
       date         
uk   2016-01-01       4.0
     2016-01-08       5.0
us   2016-01-01       1.0
     2016-01-08       1.5

预期输出

                   value
       date   
uk   2015-02-02       NaN  
... 
     2016-01-01       4.0
     2016-01-08       5.0
us   2015-02-02       NaN
...
     2016-01-01       1.0
     2016-01-08       1.5

【问题讨论】:

    标签: python python-3.x pandas datetime


    【解决方案1】:

    我尝试通过MultiIndex.from_product 修改之前使用MultiIndex 的答案,以获得第一级每个类别的相同日期时间:

    rng = (pd.date_range('2015-01-02', df.index.levels[1].min(), freq='7d')
             .union(df.index.get_level_values(1).unique()))
    
    cat = df.index.levels[0]
    df = df.reindex(pd.MultiIndex.from_product([cat, rng]))
    
    print (df)
                   value
    a                   
    uk 2015-01-02    NaN
       2015-01-09    NaN
       2015-01-16    NaN
       2015-01-23    NaN
       2015-01-30    NaN
                 ...
    us 2015-12-11    NaN
       2015-12-18    NaN
       2015-12-25    NaN
       2016-01-01    1.0
       2016-01-08    1.5
    
    [108 rows x 1 columns]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 2021-01-14
      • 2020-10-02
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      相关资源
      最近更新 更多