#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, если хотите