假设我有一个看起来像这样的 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
