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

如何用Pandas匹配月份与年份提取Excel列值并计算月度均值

股票数据筛选与月度平均值计算解决方案

问题背景

给定如下股票交易数据:

MonthYearOpenHighLowClose/PriceVolume
6201986.7887.1186.0686.551507828
6201986.6387.2384.8185.062481284
6201985.3885.8184.7585.332034693
6201985.6586.8685.1386.431394847
6201986.6687.7486.6687.553025379
7201988.8489.7287.7788.454017249
7201989.219087.9588.872237183
7201989.1491.0889.1490.671647124
7201990.3990.9589.0790.593227673

需求为:

  • 计算Open、High、Low、Close/Price列的月度平均值
  • 同时按Month和Year组合提取对应数据

已尝试单独按Month或Year分组,但不知道如何结合两个条件筛选:

df = pd.read_excel('DatosUnited.xlsx')
month = df.groupby('Month')
year = df.groupby('Year')
june2019 = month.get_group("6")
year2019 = year.get_group('2019')

解决方案

1. 同时按Month和Year筛选数据

有两种高效实现方式:

方法一:布尔索引直接筛选

直接通过条件组合过滤数据,注意匹配数据类型(如Month是整数类型则用6而非字符串"6"):

df = pd.read_excel('DatosUnited.xlsx')
# 筛选2019年6月的所有数据
june_2019 = df[(df['Month'] == 6) & (df['Year'] == 2019)]

方法二:多字段分组后提取

先按Year和Month组合分组,再通过元组定位目标组:

df = pd.read_excel('DatosUnited.xlsx')
# 按年份+月份组合分组
year_month_group = df.groupby(['Year', 'Month'])
# 提取2019年6月的数据
june_2019 = year_month_group.get_group((2019, 6))

2. 计算月度平均值

基于多字段分组,对指定列计算均值:

df = pd.read_excel('DatosUnited.xlsx')
# 按年月分组,计算指定列的平均值
monthly_avg = df.groupby(['Year', 'Month'])[['Open', 'High', 'Low', 'Close/Price']].mean()
# 打印结果
print(monthly_avg)

运行后输出结果示例:

Open       High        Low  Close/Price
Year Month                                          
2019 6     86.220  86.950000  85.482000     86.184000
     7     89.395  90.437500  88.482500     89.645000

内容的提问来源于stack exchange,提问作者Adrián Desentis Flores

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:45:54