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

如何从Pandas DataFrame中提取指定条件的单个数值?

提取Pandas DataFrame中指定条件的单个数值

问题场景

现有名为attack_probability_df的DataFrame:

city        date        attack probability
0   Rome      1996-02-23    0.163317
1   Rome      1996-02-24    0.219221
2   Rome      1996-02-25    0.180625
3   Rome      1996-02-26    0.149749
4   Rome      1996-02-27    0.121288

使用以下代码按日期和城市提取attack probability值时,返回带索引的Series而非单个数值:

attack_probability_df.loc[attack_probability_df.date == date].loc[attack_probability_df.city == city]["attack probability"]

返回结果示例:

2345    0.18593
Name: attack probability, dtype: float64

解决方法

方法1:用.item()提取标量(推荐)

这是最安全的方式,仅当结果为单个元素时返回数值,若结果数量不符会直接报错,避免意外:

# 合并查询条件,避免链式索引的潜在问题
result = attack_probability_df.loc[
    (attack_probability_df.date == date) & (attack_probability_df.city == city),
    "attack probability"
].item()

方法2:用.iloc[0]按位置取值

适用于确定结果仅含单个元素的场景,通过位置索引直接取第一个元素:

result = attack_probability_df.loc[
    (attack_probability_df.date == date) & (attack_probability_df.city == city),
    "attack probability"
].iloc[0]

方法3:用.values[0]取数值数组的首个元素

通过获取Series的底层数值数组,提取第一个元素:

result = attack_probability_df.loc[
    (attack_probability_df.date == date) & (attack_probability_df.city == city),
    "attack probability"
].values[0]

额外优化:合并查询条件

原代码使用两次.loc链式索引,可能触发SettingWithCopyWarning,建议将两个条件合并为一个布尔表达式(注意加括号),既提升效率又更安全。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:20:35