Нашли ошибку?
базовыйpandas 3.0.6

Выбор столбцов

Взять один столбец, несколько столбцов или все столбцы нужного типа.

Нужно знать:DataFrame

Содержание статьи

Коротко

  • df["col"] — один столбец, результат — Series.
  • df[["a", "b"]] — несколько столбцов (список!), результат — DataFrame. df[["a"]] — DataFrame из одного столбца.
  • df.col работает для простых имён, но ломается, если имя совпадает с методом или атрибутом (size, count, index) или содержит пробел. Для присваивания точку не используют.
  • select_dtypes(include="number") — все числовые столбцы; filter(like="…") — по части имени.

Синтаксис

df["col"]                         # Series
df[["a", "b"]]                    # DataFrame
df.select_dtypes(include="number", exclude=None)
df.filter(items=None, like=None, regex=None)

Параметры

ПараметрЧто делаетПо умолчанию
include / excludeв select_dtypes: типы — "number", "str", "bool", "datetime", "category" или списокNone
likeв filter: подстрока в имени столбцаNone
regexв filter: регулярное выражение для имениNone
itemsв filter: точный список имён; отсутствующие пропускаются без ошибкиNone

Примеры

Данные для примеровиспользуются во всех примерах ниже
menu = pd.DataFrame({
    "item": ["латте", "чай", "раф"],
    "price": [180, 90, 220],
    "price_old": [170, 90, 200],
    "size": ["M", "L", "M"],
    "vegan": [False, True, False],
})
Один столбец
menu["price"]                   # один столбец — Series
Вывод
0    180
1     90
2    220
Name: price, dtype: int64
Несколько столбцов
menu[["item", "price"]]         # список столбцов — DataFrame
Вывод
    item  price
0  латте    180
1    чай     90
2    раф    220
Один столбец как DataFrame
menu[["price"]]                 # двойные скобки — DataFrame из одного столбца
Вывод
   price
0    180
1     90
2    220
Столбцы по типу
print(menu.select_dtypes(include="number").columns)
menu.select_dtypes(include=["str", "bool"]).columns
Вывод
Index(['price', 'price_old'], dtype='str')
Index(['item', 'size', 'vegan'], dtype='str')
Столбцы по части имени
menu.filter(like="price")       # столбцы, в имени которых есть «price»
Вывод
   price  price_old
0    180        170
1     90         90
2    220        200

Подводные камни

Доступ через точку

Столбец size через точку не достать: menu.size — это число элементов таблицы. Используйте квадратные скобки везде, где имя может совпасть с атрибутом.

menu.price и menu.size
print(menu.price.max())         # доступ через точку — только для чтения и простых имён
menu.size                       # size — это атрибут DataFrame, а не столбец!
Вывод
220
15

Опечатка в имени столбца

Несуществующий столбецошибка: KeyError
menu["cost"]
Ошибка
KeyError: 'cost'

Список имён — df.columns. Проверка наличия — "cost" in df.columns.