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



>我有这个系列:

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

有可能进行这种运动。感谢您的帮助。

您可以先从MultiIndexreset_index列,然后将新列insert到位置 1 的位置 1replace和最后一个set_index进行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_valuesreplaceMultiIndex.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

最新更新