You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历带有双重索引的Pandas Series并解决迭代报错?

解决多级索引Pandas Series遍历报错问题

你遇到的错误原因很直接:直接遍历my_series时,迭代的是Series里的数值(比如14.0、65.0这类numpy.float64类型的值),而不是你需要的多级索引元组。所以for index,date in my_series会尝试把单个浮点数拆成两个变量,自然触发“'numpy.float64' object is not iterable”的报错。

下面给你几种正确的实现方式:

方式1:遍历多级索引对象

直接迭代my_series.index,每个元素是包含两个层级的元组:

# 直接用索引元组作为键
a_dict = {idx: my_series[idx] * 2 for idx in my_series.index}

# 或者拆分出index和date单独处理
a_dict = {index: my_series[(index, date)] * 2 for index, date in my_series.index}

方式2:用items()方法直接获取索引和值

items()方法会返回每个元素的(索引元组,对应值)对,更直观:

# 用索引元组作为键
a_dict = {idx: val * 2 for idx, val in my_series.items()}

# 拆分索引层级
a_dict = {index: val * 2 for (index, date), val in my_series.items()}

额外需求:按第一个索引层级分组处理

如果你的目标是把第一个层级的index作为键,对应该分组下所有处理后的值,可以用groupby:

# 生成{12345: [28.0, 130.0, 162.0], 23456: [42.0, 102.0, 110.0]}这样的字典
a_dict = {idx: (group * 2).tolist() for idx, group in my_series.groupby(level=0)}

内容的提问来源于stack exchange,提问作者backer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 05:45:41