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

如何在Plotly折线图中将DataFrame行设置为X轴

问题原因

空白图和px.line()的参数组合没关系,核心问题是你传入的DataFrame结构不符合要求。你从Excel读入的是交叉宽表:第一行存月份、第一列存成员名,统计值存在行列交叉的单元格里。px.line()只能识别列维度的字段,无法直接把某一行数据映射为X轴,你之前传df.columns当Y轴更是会把所有列当成独立绘图指标,自然渲染不出有效内容。

解决方法

核心是先把宽表转成Plotly支持的长表(每一列对应一个独立字段),再传参绘图,全程不需要用iloc硬索引行数据。

完整可运行代码

import pandas as pd
import plotly.express as px

# --- 第一步:清洗原始读入的Excel数据 ---
# 提取第一行存储的月份值
month_values = df.iloc[0, 1:].tolist()
# 移除存月份的第一行,重置索引
df = df.iloc[1:].reset_index(drop=True)
# 重命名列:第一列为成员名,后续列对应提取到的月份
df.columns = ["Team_Member"] + month_values

# --- 第二步:宽表转长表(核心操作) ---
df_long = df.melt(
    id_vars="Team_Member",
    var_name="Month",
    value_name="Daily_Work_Hours"
)
# 把数值列转为数字类型,避免Excel读入为字符串导致绘图异常
df_long["Daily_Work_Hours"] = pd.to_numeric(df_long["Daily_Work_Hours"])

# 可选:如果需要X轴月份按时间顺序排列,执行下面这行
# df_long["Month"] = pd.to_datetime(df_long["Month"])

# --- 第三步:绘图,直接传列名即可 ---
fig = px.line(
    df_long,
    x="Month",
    y="Daily_Work_Hours",
    color="Team_Member",
    title="团队成员月均日均工时趋势",
    markers=True
)
fig.show()

注意事项

  • px.line()的x/y/color参数仅支持两类输入:DataFrame的列名字符串,或与DataFrame长度一致的数组,无法直接识别行维度的切片数据,不要尝试给x传iloc取的行对象。
  • 转长表后三个字段直接对应绘图需求:
    • Team_Member:传入color参数,自动按团队成员名分色绘制独立折线
    • Month:传入x参数作为X轴
    • Daily_Work_Hours:传入y参数作为Y轴数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:57:21