Skip to main content
 首页 » 编程设计

python之获取行匹配条件的 Pandas DataFrame 中的第一列值

2025年05月04日20lautakyan007

假设我有一个看起来像这样的 pandas 数据框:

   color  number 
0    red       3 
1   blue       4 
2  green       2 
3   blue       2 

我想从数字列中获取第一个值,其中颜色列的值为 'blue',在本例中将返回 4。

我知道这可以使用 loc 来完成,如下所示:

df[df['color'] == 'blue']['number'][0] 

考虑到我只需要第一次出现,我想知道是否有更好的方法。

请您参考如下方法:

使用 head——如果颜色存在,这将返回第一行,否则返回一个空的 Series。

col = 'blue' 
df.query('color == @col').head(1).loc[:, 'number'] 
 
1    4 
Name: number, dtype: int64 

或者,要获取单个项目,请使用 obj.is_empty:

u = df.query('color == @col').head(1) 
if not u.is_empty: 
    print(u.at[u.index[0], 'number']) 
 
# 4 

对于无效颜色,head 和 idxmax 之间的区别:

df.query('color == "blabla"').head(1).loc[:, 'number'] 
# Series([], Name: number, dtype: int64) 
 
df.loc[(df['color'] == 'blabla').idxmax(),'number'] 
# 3