代码之家  ›  专栏  ›  技术社区  ›  felocru

如何将一个系列转换为另一个系列的索引,并按其索引对齐

  •  1
  • felocru  · 技术社区  · 7 年前

    我有这个系列:

    dealer      certificate_status brand_kia 
    aeropuerto      NO               False     22 days
                                     True      29 days
    Galerías         SI              False     59 days
                     NO              False     34 days
    

    我还有另一个系列:

    dealer
    aeropuerto    36 days
    Galerías      41 days
    

    如何将最后一个系列的值作为第一个系列的索引,但使用平均名称。 它是这样的:

    dealer       average     certificate_status    brand_kia 
    aeropuerto    36 days           NO              False     22 days
                                                    True      29 days
    Galerías      41 ays            SI              False     59 days
                                    NO              False     34 days
    

    可以进行此运动。谢谢你的帮助。

    1 回复  |  直到 7 年前
        1
  •  0
  •   jezrael    7 年前

    你可以先 reset_index fo列来自 MultiIndex 然后 insert 位置1的新列由 replace 最后一个 set_index 对于 Multiindex 具有 squeeze 用于转换一列 df Series :

    s = s.reset_index()
    s.insert(1, 'average', s['dealer'].replace(s1))
    s = s.set_index(['dealer','average','certificate_status','brand_kia']).squeeze()
    print (s)
    dealer      average  certificate_status  brand_kia
    aeropuerto  36 days  NO                  False        22 days
                                             True         29 days
    Galerias    41 days  SI                  False        59 days
                         NO                  False        34 days
    Name: dt, dtype: object
    

    或者您可以创建新的 多索引 通过 get_level_values 具有 代替 MultiIndex.from_arrays 并分配回:

    lvl1 = s.index.get_level_values(0)
    lvl2 = s.index.get_level_values(1)
    lvl3 = s.index.get_level_values(2)
    
    lvl = pd.Series(lvl1).replace(s1).values
    
    s.index = pd.MultiIndex.from_arrays([lvl1, lvl, lvl2, lvl3],
                             names=['dealer','average','certificate_status','brand_kia'])
    print (s)
    dealer      average  certificate_status  brand_kia
    aeropuerto  36 days  NO                  False        22 days
                                             True         29 days
    Galerias    41 days  SI                  False        59 days
                         NO                  False        34 days
    Name: dt, dtype: object