Python 将特定函数应用于多索引级别的唯一值作为列表,创建新的多索引

Python 将特定函数应用于多索引级别的唯一值作为列表,创建新的多索引,python,pandas,multi-index,Python,Pandas,Multi Index,我想使用一个需要列表作为输入的函数来转换多索引的值,使用起来很昂贵 def示例_函数(*,alist): 导入时间 对于我来说: 印刷品(一) 睡眠时间(0.1) 返回[ 列表中s的str(s).upper()+“”+str(np.random.randint(01100_000,1)[0]) ] 示例索引: idx=pd.MultiIndex.from_元组( [ (“第一”、“一”), (“第一”、“第二”), (“第二”、“一”), (“第二”、“三”), (“第二”、“五”), ] )

我想使用一个需要列表作为输入的函数来转换多索引的值,使用起来很昂贵

def示例_函数(*,alist):
导入时间
对于我来说:
印刷品(一)
睡眠时间(0.1)
返回[
列表中s的str(s).upper()+“”+str(np.random.randint(01100_000,1)[0])
]
示例索引:

idx=pd.MultiIndex.from_元组(
[
(“第一”、“一”),
(“第一”、“第二”),
(“第二”、“一”),
(“第二”、“三”),
(“第二”、“五”),
]
)
使用上述多重索引,计算时间应为
0.5*(2+4)=3秒

起初我认为可以使用
设置级别
,但这似乎不起作用

尝试:

idx_new=idx.copy()
已处理的_级别=[]
对于范围内的i(idx.nlevels):
当前\u级别=idx\u新建。获取\u级别\u值(级别=i)
重新映射(
zip(current\u level.unique(),示例函数(alist=current\u level.unique())
)
已处理的_levels.append(当前_level.unique().map(重新映射))
给予

#已处理的#u级别
[索引(['FIRST_38195','SECOND_65065',dtype='object'),
索引(['ONE_18944'、'TWO_29545'、'THREE_80217'、'FIVE_4730'],dtype='object')]

idx\u新建。设置\u级别(已处理的\u级别)
如果没有映射正确的值,则会给出:

MultiIndex([('FIRST_38195','TWO_29545'),
('FIRST_38195'、'FIVE_4730'),
(“第二个”(SECOND_65065)、“两个”(TWO_29545)),
(‘第二’、‘三’),
('SECOND_65065'、'ONE_18944'),
)
第一个索引是正确的(相同的输入值具有相同的后缀是必要的),但第二个索引是错误的,参考原始数据:

MultiIndex([('first','one'),
(‘第一’、‘第二’),
(‘第二’、‘一’),
(‘第二’、‘三’),
(“第二”、“五”),
)
要明确的是,这里的后缀数字是什么并不重要,重要的是相同的输入值接收相同的输出值