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

如何在特定列去除重复值且保留关联行并绘制柱状图

特定列去重保留关联行 + 柱状图绘制方案

首先先明确你的需求和期望效果:

输入数据

Date Market Quantity
4/2/2018 Indonesia 1000
4/2/2018 Australia 500
4/2/2018 India 300
4/2/2018 USA 500
4/2/2018 Germany 200
5/2/2018 India 400
5/2/2018 Japan 400
5/2/2018 Russia 457
6/2/2018 Austria 260
6/2/2018 Swiss 700
6/2/2018 USA 1200
6/2/2018 Indonesia 400

期望输出

Date Market Quantity
4/2/2018 Indonesia 1000
Australia 500
India 300
USA 500
Germany 200
5/2/2018 India 400
Japan 400
Russia 457
6/2/2018 Austria 260
Swiss 700
USA 1200
Indonesia 400

一、实现Date列去重但保留所有关联行

你要的效果是让重复的日期仅在首次出现时显示,后续同一日期的行隐藏日期值,同时保留所有行的市场和销量数据。下面分两种常用工具给出具体实现方法:

1. Excel 快速操作步骤

假设你的数据放在A1:C12区域(表头在第一行):

  • 在D2单元格输入公式:=IF(A2=A1,"",A2)
  • 将D2单元格的公式下拉填充到所有数据行
  • 此时D列就是处理后的日期列,你可以隐藏原始A列,把D列重命名为Date,就能得到你想要的输出格式

2. Python Pandas 实现代码

如果你习惯用代码处理数据,用Pandas可以一键完成:

import pandas as pd

# 读取或定义你的数据
df = pd.DataFrame({
    'Date': ['4/2/2018', '4/2/2018', '4/2/2018', '4/2/2018', '4/2/2018',
             '5/2/2018', '5/2/2018', '5/2/2018',
             '6/2/2018', '6/2/2018', '6/2/2018', '6/2/2018'],
    'Market': ['Indonesia', 'Australia', 'India', 'USA', 'Germany',
               'India', 'Japan', 'Russia',
               'Austria', 'Swiss', 'USA', 'Indonesia'],
    'Quantity': [1000, 500, 300, 500, 200, 400, 400, 457, 260, 700, 1200, 400]
})

# 核心处理:将与上一行重复的日期替换为空字符串
df['Date'] = df['Date'].where(df['Date'] != df['Date'].shift(), '')

# 打印输出结果(无索引)
print(df.to_string(index=False))

运行这段代码后,输出的格式完全匹配你给出的示例。


二、基于处理后的逻辑绘制柱状图

当然可以绘制你提到的分组柱状图!不过要注意:绘图时我们需要原始的完整数据(不要用处理后日期为空的版本,因为图表需要明确的分组关联),下面给出两种实现方式:

1. Excel 绘制分组柱状图步骤

  • 选中原始完整数据区域(A1:C12)
  • 点击「插入」选项卡,选择「簇状柱形图」(也就是你说的分组柱状图)
  • 可以自定义图表样式:比如将X轴设置为市场名称,图例设置为日期,调整柱子颜色、添加数据标签等,最终就能得到类似示例图的对比效果

2. Python Matplotlib + Seaborn 绘制代码

用代码可以更灵活地定制图表:

import matplotlib.pyplot as plt
import seaborn as sns

# 使用原始完整数据进行绘图
plt.figure(figsize=(12, 6))
# 绘制分组柱状图,按日期区分不同市场的销量
sns.barplot(data=df, x='Market', y='Quantity', hue='Date')

# 自定义图表样式
plt.title('Market Sales Quantity by Date', fontsize=14)
plt.xlabel('Market', fontsize=12)
plt.ylabel('Quantity', fontsize=12)
plt.xticks(rotation=45, ha='right')  # 旋转X轴标签避免重叠
plt.tight_layout()  # 自动调整布局
plt.show()

这段代码会生成一个清晰的分组柱状图,每个市场对应不同日期的销量柱子,完美展示各日期下的市场销量对比,和你想要的示例图效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:35:57