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

如何对Pandas DataFrame按多列分组以提取绘图所需的特定值

解决方案

你完全可以通过Pandas内置的筛选+透视表功能搞定,全程不需要手动遍历,代码非常简洁:

第一步:筛选价格数据

直接用布尔索引提取所有Tag为Price的记录:

# 筛选价格数据
price_df = df[df['Tag'] == 'Price']

第二步:转换为适配绘图的宽表

用pivot方法把现有长表转成宽表,行设置为产品名、列设置为年份、值设置为价格,转换后的数据结构刚好匹配你要的分组柱状图输入要求:

plot_df = price_df.pivot(index='Product', columns='Year', values='Value')

转换后plot_df的结构如下:

Product201920202021
Apple0.230.230.24
Banana0.810.830.90
Papaya2.312.292.41

第三步:直接生成图表或提取坐标数据

如果直接用Pandas内置绘图能力,一行代码就能生成目标柱状图:

import matplotlib.pyplot as plt

plot_df.plot(kind='bar', figsize=(10,6))
plt.xlabel('产品名称')
plt.ylabel('价格')
plt.title('各产品近年价格对比')
plt.xticks(rotation=0)
plt.show()

如果需要给第三方绘图工具提供数据,直接从转换后的宽表提取即可:

  • X轴标签:plot_df.index.tolist() 即为所有产品名称列表
  • 年份维度列表:plot_df.columns.tolist() 即为所有统计年份列表
  • 单年份价格数据:按列提取即可,比如2019年价格为plot_df[2019].tolist()

整个过程只有3行核心Pandas代码,相比手动遍历性能更高,就算是百万级的数据量也能高效处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:48:03