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

Pandas如何按每2列分组以日期为x轴绘制各水果对应折线图

实现方案

原有代码存在三个核心问题:

  • 条件判断逻辑错误:单个列名不可能同时以_old和_new结尾,该条件永远为False,不会触发任何绘图逻辑
  • 变量使用混乱:代码中x未提前定义,且直接将绘图返回的axes对象赋值给x,逻辑完全不成立
  • 缺少按水果词根分组的逻辑:直接遍历所有列,没有提取相同水果的列名前缀

正确实现代码

我们可以先提取所有唯一的水果名称,再按水果循环生成单独的折线图:

import pandas as pd
import matplotlib.pyplot as plt

# 提取所有水果名称(排除date列,取列名前缀去重)
valid_cols = [col for col in df.columns if col.endswith('_old') or col.endswith('_new')]
fruit_list = list(set(col.rsplit('_', 1)[0] for col in valid_cols))

# 每个水果生成一张独立折线图
for fruit in fruit_list:
    y_cols = [f"{fruit}_old", f"{fruit}_new"]
    ax = df.plot(
        kind="line",
        x="date",
        y=y_cols,
        figsize=(8,5),
        title=f"{fruit}新旧数据趋势对比"
    )
    ax.set_xlabel("日期")
    ax.set_ylabel("数值")
    ax.legend(["旧版本数据", "新版本数据"])
    # 若需要保存图片到本地可取消下方注释
    # plt.savefig(f"./{fruit}_对比图.png")
    plt.show()

运行后会自动按水果生成独立的折线图,每张图都包含对应水果的新旧两条趋势线,x轴为日期列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 11:30:04