Как выбрать определенное значение из фрейма данных?

#python #sql #pandas #dataframe

#python #sql #панды #фрейм данных

Вопрос:

Как я могу выбрать определенное значение из фрейма данных на основе значений в некотором столбце в Pandas? Я не могу использовать индекс, поскольку мои данные не имеют индексов pandas

В SQL я бы использовал:

 SELECT name 
FROM contacts
WHERE phone = '234-567-8900'
 

Я хочу вернуть имя контакта с указанным номером телефона.

Я попытался посмотреть документацию Pandas, но не сразу нашел ответ.

Самое близкое, что я получил, было:

 contact.loc[contact['Phone']=='234-567-8900', 'name']
 

но это возвращает dtype: object, и мне просто нужно строковое значение имени

Комментарии:

1. contacts.loc[contact['Phone']=='234-567-8900', 'name'].tolist() на самом деле str в фрейме данных будет отображаться как объект dtype.

2. На самом деле это меня очень близко. Он вернул массив, содержащий только строку имени внутри. Я добавил ‘[0]’ в конце вашего кода и получил саму строку, но есть ли более чистый / простой способ?

Ответ №1:

 contacts[(contacts['Phone'] == '234-567-8900')]['name'].iloc[x]
 

x — любое целое число — если есть только один элемент, тогда установите x равным 0

Сначала вы выбираете все строки, где contacts — 234-567-8900, а затем для этих строк вы берете столбец name

Комментарии:

1. Только что попробовал — все равно возвращает объект dtype. Как мне получить значение внутри?

2. Я только что отредактировал свой ответ — это зависит от количества элементов, возвращаемых фильтром — вы можете выполнить цикл с помощью цикла for, если хотите