Получить список из заголовков столбцов pandas DataFrame

Я хочу получить список заголовков столбцов из фрейма данных pandas. Фрейм данных будет поступать от пользователя, поэтому я не буду знать, сколько столбцов будет или как они будут называться.

например, если мне дают такой фрейм данных:

>>> 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]

17 ответов


Вы можете получить значения в виде списка, выполнив:

list(my_dataframe.columns.values)

Также вы можете просто использовать:

list(my_dataframe)

существует встроенный метод, который является наиболее эффективным:

my_dataframe.columns.values.tolist()

.columns возвращает Index, .columns.values возвращает array и это имеет вспомогательную функцию, чтобы возвратить list.

редактировать

для тех, кто ненавидит печатать это, вероятно, самый короткий метод:

list(df)

сделал несколько быстрых тестов, и, возможно, неудивительно, что встроенная версия с использованием dataframe.columns.values.tolist() быстрый:

In [1]: %timeit [column for column in df]
1000 loops, best of 3: 81.6 µs per loop

In [2]: %timeit df.columns.values.tolist()
10000 loops, best of 3: 16.1 µs per loop

In [3]: %timeit list(df)
10000 loops, best of 3: 44.9 µs per loop

In [4]: % timeit list(df.columns.values)
10000 loops, best of 3: 38.4 µs per loop

(мне еще очень нравится list(dataframe) хотя, так что спасибо EdChum!)


становится еще проще (от pandas 0.16.0):

df.columns.tolist()

дам вам имена столбцов в хорошем списке.


>>> list(my_dataframe)
['y', 'gdp', 'cap']

чтобы перечислить столбцы фрейма данных в режиме отладчика, используйте понимание списка:

>>> [c for c in my_dataframe]
['y', 'gdp', 'cap']

кстати, вы можете получить отсортированный список с помощью sorted:

>>> sorted(my_dataframe)
['cap', 'gdp', 'y']

это доступно как my_dataframe.columns.


Это интересно, но df.columns.values.tolist() почти в 3 раза быстрее, чем df.columns.tolist() но я думал, что они такие же:

In [97]: %timeit df.columns.values.tolist()
100000 loops, best of 3: 2.97 µs per loop

In [98]: %timeit df.columns.tolist()
10000 loops, best of 3: 9.67 µs per loop

A таблицы данных следует dict-подобному соглашению итерации по "ключам" объектов.

my_dataframe.keys()

создать список ключей / столбцов-метод объекта to_list() и подходящие для Python способ

my_dataframe.keys().to_list()
list(my_dataframe.keys())

основные итерации на фрейме данных возвращает метки столбцов

[column for column in my_dataframe]

не преобразуйте фрейм данных в список, просто чтобы получить метки столбцов. Не прекращайте думать во время поиска удобных образцов кода.

xlarge = pd.DataFrame(np.arange(100000000).reshape(10000,10000))
list(xlarge) #compute time and memory consumption depend on dataframe size - O(N)
list(xlarge.keys()) #constant time operation - O(1)

в записную книжку

для исследования данных в ноутбуке IPython мой предпочтительный способ:

sorted(df)

который будет производить легко читать в алфавитном порядке список.

в репозитории кода

в коде я нахожу его более четким, чтобы сделать

df.columns

потому что он говорит другим, читающим ваш код, что вы делаете.


n = []
for i in my_dataframe.columns:
    n.append(i)
print n

Я чувствую, что вопрос заслуживает дополнительного разъяснения.

как отметил @fixxxer, ответ зависит от версии pandas, которую вы используете в своем проекте. Который вы можете получить с .

Если вы по какой-то причине похожи на меня (в debian jessie я использую 0.14.1), используя более старую версию pandas, чем 0.16.0, вам нужно использовать:

df.keys().tolist() потому что нет df.columns способ реализованы.

преимущество этого метода ключей в том, что он работает даже в более новой версии pandas, поэтому она более универсальна.


как ответил Симеон Виссер...вы могли бы сделать

list(my_dataframe.columns.values) 

или

list(my_dataframe) # for less typing.

но я думаю, что самое сладкое место-это:

list(my_dataframe.columns)

это явно, в то же время не излишне долго.


в этом решении перечислены все столбцы вашего объекта my_dataframe:

print(list(my_dataframe))

list(a_dataframe)

это должно помочь!


для быстрой, аккуратной, визуальной проверки попробуйте следующее:

for col in df.columns:
    print col

это дает нам имена столбцов в списке:

list(my_dataframe.columns)

можно также использовать другую функцию, называемую tolist ():

my_dataframe.columns.tolist()

можно использовать атрибуты индекса

df = pd.DataFrame({'col1' : np.random.randn(3), 'col2' : np.random.randn(3)},
                 index=['a', 'b', 'c'])