Подтвердить что ты не робот

Как получить значение из Pandas DataFrame, а не индекс и тип объекта

Скажем, у меня есть следующий DataFrame

Letter    Number
A          1
B          2
C          3
D          4

Что можно получить с помощью следующего кода

import pandas as pd

letters=pd.Series(('A', 'B', 'C', 'D'))
numbers=pd.Series((1, 2, 3, 4))
keys=('Letters', 'Numbers')
df=pd.concat((letters, numbers), axis=1, keys=keys)

Теперь я хочу получить значение C из столбца Letters.

Командная строка

df[df.Letters=='C'].Letters

вернет

2    C
Name: Letters, dtype: object

Мой вопрос: как я могу получить только значение C, а не весь вывод из двух строк?

Большое спасибо.
Эдуардо

4b9b3361

Ответ 1

df[df.Letters=='C'].Letters.item()

Это возвращает первый элемент в индексе/серии, возвращенный из этого выбора. В этом случае значение всегда является первым элементом.

EDIT:

Или вы можете запустить loc() и получить доступ к первому элементу таким образом. Это было короче, и я использовал его в прошлом.

Ответ 2

Используйте атрибут values, чтобы вернуть значения в виде массива np, а затем используйте [0] для получения первого значения:

In [4]:
df.loc[df.Letters=='C','Letters'].values[0]

Out[4]:
'C'

ИЗМЕНИТЬ

Я лично предпочитаю обращаться к столбцам, используя индексированные операторы:

df.loc[df['Letters'] == 'C', 'Letters'].values[0]

Это позволяет избежать проблем, при которых имена столбцов могут иметь пробелы или дефисы -, что означает, что доступ осуществляется с помощью ..

Ответ 3

import pandas as pd

dataset = pd.read_csv("data.csv")
values = list(x for x in dataset["column name"])

>>> values[0]
'item_0'

редактировать:

на самом деле, вы можете просто индексировать набор данных, как любой старый массив.

import pandas as pd

dataset = pd.read_csv("data.csv")
first_value = dataset["column name"][0]

>>> print(first_value)
'item_0'