Python从MultiIndex的FrozenList提取有效索引用于循环校验
解决方法
你的数据集是2级MultiIndex结构,第0层为你需要的UUID格式长编码,第1层为固定值vehicle,按以下方法操作即可:
提取目标索引列表
有两种常用方式,第二种适配存在未使用索引值的场景更稳妥:
- 直接取层级值
target_index_list = list(df.index.levels[0])
- 取实际出现的索引值去重
target_index_list = list(df.index.get_level_values(0).unique())
适配MultiIndex的循环写法
你原代码的loc调用不符合MultiIndex的取值规范,可改用xs方法按层级取值,逻辑如下:
for idx in target_index_list: current_data = df.xs(idx, level=0) print(current_data["SERIAL_NUMBER"].unique())
可选优化
如果第二层固定vehicle索引对你后续操作无意义,可以直接删除该层级,后续就可以用普通单索引的方式操作:
# 删除第1层索引 df = df.droplevel(1) # 之后直接按单索引取值即可 for idx in df.index.unique(): print(df.loc[idx, "SERIAL_NUMBER"].unique())
内容的提问来源于stack exchange,提问作者Joehat
相关产品推荐
相关产品推荐

