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

How to convert a series into an index of another series, aligned by their indexes

我有这个系列:

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

做这个动作是可以的。感谢您的帮助。

您可以先 reset_index fo columns from MultiIndex, then insert new column to position 1 by replace and last set_index for Multiindexsqueeze 将一列 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 with replace and MultiIndex.from_arrays 创建新的 MultiIndex 并分配回去:

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