Как получить значение из 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, а не весь вывод из двух строк?
Большое спасибо.
Эдуардо
Ответы
Ответ 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'