Как получить одно значение в виде строки из фрейма данных Pandas - PullRequest
0 голосов
/ 12 ноября 2018

Я запрашиваю одно значение из моего фрейма данных, которое выглядит как «dtype: object». Я просто хочу напечатать значение без печати индекса или другой информации. Как мне это сделать?

col_names = ['Host', 'Port']
df = pd.DataFrame(columns=col_names)
df.loc[len(df)] = ['a', 'b']

t = df[df['Host'] == 'a']['Port']
print(t)

ВЫВОД: enter image description here

ОЖИДАЕМЫЙ ВЫХОД: б

Ответы [ 3 ]

0 голосов
/ 12 ноября 2018

должно работать просто ..

>>> df
  Host Port
0    a    b
>>> df[df['Host'] == 'a']['Port'][0]   # will choose the first index simply which is 'b'
'b'

ИЛИ, используйте с отпечатком, который снимает отдельные галочки.

>>> print(df[df['Host'] == 'a']['Port'][0])
b

Это будет проще, потому что вы просто выбираете нужный индекс, даже если у вас есть несколько значений в Port столбцах

Пример:

>>> df
  Host Port
0    a    b
1    c    c

Ищем различные a & c на основе индекса:

>>> df[df['Host'] == 'a']['Port'][0]
'b'
>>> df[df['Host'] == 'c']['Port'][1]
'c'
0 голосов
/ 12 ноября 2018

Как уже упоминалось в моем комментарии, использование [1] должно сработать впоследствии, чтобы получить нужную переменную.

t = df[df['Host'] == 'a']['Port'][1]
0 голосов
/ 12 ноября 2018

Если вы можете гарантировать, что возвращается только один результат, используйте 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 вернет первый индекс (и вернет неверный результат).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...