Коротко
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" или списокNonelikeв filter: подстрока в имени столбцаNoneregexв filter: регулярное выражение для имениNoneitemsв 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
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 — это число элементов таблицы. Используйте квадратные скобки везде, где имя может совпасть с атрибутом.
print(menu.price.max()) # доступ через точку — только для чтения и простых имён
menu.size # size — это атрибут DataFrame, а не столбец!Вывод
220 15
Опечатка в имени столбца
menu["cost"]Ошибка
KeyError: 'cost'
Список имён — df.columns. Проверка наличия — "cost" in df.columns.