首页 > 解决方案 > 用系列更新 pandas DataFrame 多级索引?

问题描述

给定DataFrame具有多级索引的 a(在此示例中,“userId”和“日期”是索引的一部分):

                 clicks
userId   date
x        1/1     1
         1/2     2
y        1/1     3
         1/3     4
z        1/1     4

并且给定一个Series具有来自 DataFrame 的多索引的第一级的值作为它自己的索引的值:

x    Alice
z    Charlie
y    Bob

如何将 DataFrame 索引的第一级更新为 Series 中的值? 生成的 DataFrame 看起来像

Alice    1/1     1
         1/2     2
Bob      1/1     3
         1/3     4
Charlie  1/1     4

注意:我不能依赖 Series 的顺序与多索引的第一级的顺序相同(例如,Series 索引是 ['x', 'z', 'y'] 而 DataFrame 的第一级是['x', 'y', 'z'])

预先感谢您的考虑和回复。

标签: pythonpython-3.xpandasdataframe

解决方案


使用 Series 映射关卡,然后重新分配索引。

import pandas as pd

df.index = pd.MultiIndex.from_arrays(
            [df.index.get_level_values('userId').map(s),  # s is your Series
             df.index.get_level_values('date')])

             clicks
userId  date        
Alice   1/1        1
        1/2        2
Bob     1/1        3
        1/3        4
Charlie 1/1        4

推荐阅读