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

如何在循环中借助迭代器动态调用多个DataFrame并绘图?

解决思路:用字典存储动态生成的DataFrame,避免exec和字符串变量名问题

你当前的写法无效,核心原因是给plotly传入的是字符串形式的变量名(比如"df_hour0['hour']"),而不是实际的DataFrame列数据(df_hour0['hour']这个Series对象),plotly无法通过字符串解析获取真实数据。

更合理的实现步骤:

1. 用字典存储所有小时的DataFrame(替代exec生成零散变量)

不要用exec生成df_hour0到df_hour23这些独立变量,改用字典统一存储,既整洁又方便循环调用:

N = 24
# 用字典推导式快速生成,key为小时数,value为对应小时的DataFrame
hour_dfs = {i: df_m_a_meaned[df_m_a_meaned['hour'] == i] for i in range(N)}

如果习惯逐行循环写法,也可以这样写:

hour_dfs = {}
for i in range(N):
    hour_dfs[i] = df_m_a_meaned[df_m_a_meaned['hour'] == i]

2. 循环字典生成图表

直接从字典中取出对应小时的DataFrame,传入plotly的Box组件:

import plotly.graph_objects as go

fig = go.Figure(data=[
    go.Box(
        x=hour_dfs[i]['hour'],
        y=hour_dfs[i]['priceNum'],
        name=f"小时 {i}"  # 可选:给每个箱线图添加名称,让图例更清晰
    ) for i in range(N)
])

fig.show()

额外提示:为什么不推荐用exec生成变量?

  • 污染全局命名空间,变量过多后难以管理和排查问题
  • 代码可读性差,后续维护成本高
  • 容易出现语法错误,排查起来麻烦

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:01:19