如何将一个系列转换为另一个系列的索引,并按其索引对齐
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 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
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
我有这个系列:
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 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
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