Если вы можете гарантировать, что возвращается только один результат, используйте loc
и звоните item
:
>>> df.loc[df['Host'] == 'a', 'Port'].item()
'b'
Или, аналогично,
>>> df.loc[df['Host'] == 'a', 'Port'].values[0]
'b'
... чтобы получить первое значение (аналогично, .values[1]
для второго). Что лучше, чем df.loc[df['Host'] == 'a', 'Port'][0]
, потому что, если ваш DataFrame выглядит так,
Host Port
1 a b
Тогда будет выдано «KeyError: 0» -
df.loc[df['Host'] == 'a', 'Port'][0]
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
В качестве альтернативы используйте at
:
>>> df.at[df['Host'].eq('a').idxmax(), 'Port']
'b'
Недостатком является то, что если «a» не существует, idxmax
вернет первый индекс (и вернет неверный результат).