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

如何基于年份和月份条件从Pandas DataFrame中返回Total列的指定单元格值

获取Pandas DataFrame中指定年月的Total值

很简单,这里有几种实用的方法帮你从给定的DataFrame中动态获取目标年月的Total值,完全满足你的需求:

首先先还原你的DataFrame

先把你提供的数据转换成可直接运行的Pandas代码,方便你测试:

import pandas as pd

data = {
    'Year': [2020,2020,2020,2020,2021,2021,2021,2021,2021,2021,2021,2021,2021,2021,2021,2021,2022,2022,2022,2022,2022],
    'Month': [9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5],
    'Total': [11788.33,18373.99,31018.59,29279.30,1875.10,9550.06,33844.39,33126.53,12910.05,44628.63,25830.03,54463.08,49723.93,23753.81,52532.49,7467.32,24333.54,12394.11,76575.46,95119.82,63048.05]
}
df = pd.DataFrame(data)

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

通过同时匹配Year和Month的条件,筛选出目标行后提取Total值:

target_value = df[(df['Year'] == 2021) & (df['Month'] == 1)]['Total'].values[0]
print(target_value)  # 输出:1875.10

这里注意用&表示逻辑与(不能用Python的and),.values[0]用来取出筛选结果中的第一个(也是唯一的)数值。

方法2:使用.loc精准定位

.loc方法可以更清晰地指定行条件和列名,可读性更强:

target_value = df.loc[(df['Year'] == 2021) & (df['Month'] == 1), 'Total'].iloc[0]
print(target_value)

第一个参数是行筛选条件,第二个参数是目标列名,最后用.iloc[0]取出Series中的唯一值。

方法3:动态参数版本(推荐)

如果需要频繁切换年月,把年份和月份设为变量,实现动态获取:

# 可随时修改的目标参数
target_year = 2021
target_month = 1

target_value = df.loc[(df['Year'] == target_year) & (df['Month'] == target_month), 'Total'].iloc[0]
print(target_value)

这样只要修改target_year和target_month的值,就能快速获取对应月份的Total数据。

可选:健壮性处理

如果担心出现没有匹配到数据的情况,可以加个判断避免报错:

result = df.loc[(df['Year'] == target_year) & (df['Month'] == target_month), 'Total']
if not result.empty:
    target_value = result.iloc[0]
    print(target_value)
else:
    print("未找到对应年月的数据")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 21:52:42