Скажем, у меня есть следующий DataFrame
Буквенный номер А 1 БИ 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 С Имя: Буквы, dtype: объект
Как я могу получить только значение C, а не весь двухстрочный вывод?
pd.DataFrame({'Letters': letters, 'Numbers': numbers})
Ответы:
Это возвращает первый элемент в индексе / серии, возвращенный из этого выбора. В этом случае значение всегда является первым элементом.
РЕДАКТИРОВАТЬ:
Или вы можете запустить loc () и таким образом получить доступ к первому элементу. Это было короче, и я реализовал это в прошлом.
источник
FutureWarning: "item" has been deprecated and will be removed in a future version
df[df.Letters=='C'].Letters.iloc[0]
. Он создает первый элемент (который также является уникальным) в ряду результатов.df[df.Letters=='C'].Letters.squeeze()
вместо этого. Это работает точно так же. :)Используйте
values
атрибут, чтобы вернуть значения в виде массива np, а затем используйте[0]
для получения первого значения:РЕДАКТИРОВАТЬ
Лично я предпочитаю обращаться к столбцам с помощью операторов индекса:
Это позволяет избежать проблем, когда в именах столбцов могут быть пробелы или дефисы,
-
что означает доступ к using.
.источник
.
для доступа к столбцам, так как это не всегда сработает, например, если имя столбца начинается с числового значения или в имени столбца есть не буквенные символы, такие как пробел, поэтому я всегда предпочитаюdf['col_name']
df['col_name']
обозначения вместо.
обозначений. Еще раз спасибо.редактировать:
фактически, вы можете просто проиндексировать набор данных, как любой старый массив.
источник