python - multiple - set columns name pandas




Obter lista de cabeçalhos de coluna DataFrame pandas (12)

No caderno

Para exploração de dados no notebook IPython, meu jeito preferido é este:

sorted(df)

Que irá produzir uma lista ordenada alfabética fácil de ler.

Em um repositório de código

No código eu acho mais explícito fazer

df.columns

Porque diz aos outros que leem o seu código o que você está fazendo.

Eu quero obter uma lista dos cabeçalhos de coluna de um DataFrame pandas. O DataFrame virá da entrada do usuário, então não sei quantas colunas haverá ou como serão chamadas.

Por exemplo, se eu receber um DataFrame assim:

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

Eu gostaria de obter uma lista como a abaixo:

>>> header_list
[y, gdp, cap]

É ainda mais simples (pelos pandas 0.16.0):

df.columns.tolist()

lhe dará os nomes das colunas em uma boa lista.


Está disponível como my_dataframe.columns .


Esta solução lista todas as colunas do seu objeto my_dataframe:

print(list(my_dataframe))

Existe um método embutido que é o mais eficaz:

my_dataframe.columns.values.tolist()

.columns retorna um Index , .columns.values retorna um array e isso tem uma função auxiliar para retornar uma list .

EDITAR

Para aqueles que odeiam digitar este é provavelmente o método mais curto:

list(df)

Fiz alguns testes rápidos, e talvez sem surpresa a versão dataframe.columns.values.tolist() usando dataframe.columns.values.tolist() é a mais rápida:

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

(Eu ainda gosto muito da list(dataframe) , então, obrigado EdChum!)


Mesmo que a solução fornecida acima seja boa. Eu também esperaria que algo como frame.column_names () fosse uma função em pandas, mas como não é, talvez seria bom usar a seguinte sintaxe. De alguma forma, preserva a sensação de que você está usando os pandas de maneira apropriada chamando a função "tolist": frame.columns.tolist ()

frame.columns.tolist() 

Para uma verificação visual rápida e simples, tente isto:

for col in df.columns:
    print col

Você pode obter os valores como uma lista fazendo:

list(my_dataframe.columns.values)

Além disso, você pode simplesmente usar:

list(my_dataframe)

como respondido por Simeon Visser ... você poderia fazer

list(my_dataframe.columns.values) 

ou

list(my_dataframe) # for less typing.

Mas acho que a maior parte do doce é:

list(my_dataframe.columns)

É explícito, ao mesmo tempo não desnecessariamente longo.


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

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

Para listar as colunas de um dataframe enquanto estiver no modo depurador, use uma compreensão de lista:

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

By the way, você pode obter uma lista ordenada simplesmente usando sorted :

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




dataframe