Дополнительно
Получить список из заголовков столбцов Pandas DataFrame
Я хочу получить список заголовков столбцов от pandas DataFrame. DataFrame будет поступать из пользовательского ввода, поэтому я не буду знать, сколько будет столбцов или как они будут называться.
Например, если мне дают DataFrame, как это:
>>> my_dataframe
y gdp cap
0 1 2 5
1 2 3 9
2 8 7 2
3 3 4 7
4 6 7 7
5 4 8 3
6 8 2 8
7 9 9 10
8 6 6 4
9 10 10 7
Я хотел бы получить список, как это:
>>> header_list
['y', 'gdp', 'cap']
904
18
Вы можете получить значения в виде списка, выполнив:
Также вы можете просто использовать: (как показано в ответе Эда Чума):
Существует встроенный метод, который является наиболее эффективным:
.columns
возвращает индекс,.columns.values
возвращает массив, и у него есть вспомогательная функция.tolist
для возврата списка.Если производительность не так важна для вас, объекты
Index
определяют метод.tolist ()
, который вы можете вызвать напрямую:Разница в производительности очевидна:
Для тех, кто ненавидит печатать, вы можете просто вызвать
list
наdf
, так:Провел несколько быстрых тестов, и, возможно, неудивительно, что встроенная версия с использованием
dataframe.columns.values.tolist ()
является самой быстрой:(Мне все еще очень нравится
list (dataframe)
, так что спасибо EdChum!)Это становится еще проще (пуандами 0.16.0):
даст вам имена столбцов в хорошем списке.
Чтобы перечислить столбцы фрейма данных в режиме отладчика, используйте понимание списка:
Кстати, вы можете получить отсортированный список, просто используя
sorted
:Это доступно как
my_dataframe.columns
.Интересно, но
df.columns.values.tolist ()
почти в 3 раза быстрее, чемdf.columns.tolist ()
, но я подумал, что они одинаковы:Удивлен, что я до сих пор не видел это, поэтому я просто оставлю это здесь.
Расширенная итерируемая распаковка (python3.5+):
[* df]
и ДрузьяРаспаковка обобщений (PEP 448) была представлена на Python 3.5. Итак, все следующие операции возможны.
& Лт;!- > ;
Если вы хотите
list
....Или, если вы хотите
set
,Или, если вы хотите
tuple
,Или, если вы хотите где-то сохранить результат
если вы тот человек, который преобразует кофе в типирование звуков, ну, это будет потреблять ваш кофе более эффективно;)...
Визуальная проверка Поскольку я видел это в других ответах, вы можете использовать итерацию распаковки (нет необходимости в явных циклах).
Критика других методов
Не используйте явный цикл
for
для операции, которую можно выполнить в одной строке (комплекты списка в порядке).Далее, использование
sorted (df)
не сохраняет первоначальный порядок столбцов. Для этого вы должны использоватьlist (df)
вместо этого.Далее,
list (df.columns)
иlist (df.columns.values)
являются плохими предложениями (по состоянию на текущую версию, v0.24). И массивыIndex
(возвращается изdf.columns
), и массивы NumPy (возвращаютсяdf.columns.values
) определяют метод.tolist ()
, который является более быстрым и идиоматичным.Наконец, лестификация, т.е.
list (df)
следует использовать только в качестве краткой альтернативы вышеупомянутым методам.A DataFrame следует диктоподобному соглашению итерации над «ключи» объектов.
Создать список ключей / столбцов - метод объекта
to_list ()
и питонический путьБазовая итерация в DataFrame возвращает метки столбцов
Не конвертируйте DataFrame в список, просто чтобы получить метки столбцов. Не переставайте думать при поиске удобных образцов кода.
& Лт;!- язык: питон - >
В тетради
Для исследования данных в ноутбуке IPython мой предпочтительный способ заключается в следующем:
Который создаст легко читаемый алфавитно упорядоченный список.
В хранилище кода
В коде я нахожу это более явным
Потому что это говорит другим, читающим ваш код, что вы делаете.
в ответ Симеон Виссер...Вы могли бы сделать
или
Но я думаю, что самое приятное место:
Это явно, в то же время не излишне долго.
Для быстрой, аккуратной, визуальной проверки попробуйте это:
Это дает нам имена столбцов в списке:
Также можно использовать другую функцию, называемую tolist ():
Я чувствую, что вопрос заслуживает дополнительного объяснения.
Как отметил @fixxxer, ответ зависит от версии pandas, которую вы используете в своем проекте. Который вы можете получить с помощью команды
pd.__version__
.Если вы по какой-то причине похожи на меня (на Debian Jessie я использую 0.14.1), используя более старую версию Pandas, чем 0.16.0, то вам нужно использовать:
df.keys () .tolist ()
, потому что методdf.columns
еще не реализован.Преимущество этого метода ключей в том, что он работает даже в более новой версии панд, поэтому он более универсален.
Хотя решение, которое было предоставлено выше, приятно. Я также ожидал бы, что что-то вроде frame.column_names () будет функцией в pandas, но, поскольку это не так, возможно, было бы неплохо использовать следующий синтаксис. Это каким-то образом сохраняет ощущение, что вы используете панды надлежащим образом, вызывая функцию «толист»: frame.columns.tolist ()
Это решение перечисляет все столбцы вашего объекта my_dataframe: