Como mostrar todos os nomes das colunas no dataframe do pandas?


114

Tenho um dataframe que consiste em centenas de colunas e preciso ver todos os nomes das colunas.

O que eu fiz:

In[37]:
data_all2.columns

O resultado é:

Out[37]:
Index(['customer_id', 'incoming', 'outgoing', 'awan', 'bank', 'family', 'food',
       'government', 'internet', 'isipulsa',
       ...
       'overdue_3months_feature78', 'overdue_3months_feature79',
       'overdue_3months_feature80', 'overdue_3months_feature81',
       'overdue_3months_feature82', 'overdue_3months_feature83',
       'overdue_3months_feature84', 'overdue_3months_feature85',
       'overdue_3months_feature86', 'loan_overdue_3months_total_y'],
      dtype='object', length=102)

Como faço para mostrar todas as colunas, em vez de uma lista truncada?

Respostas:


173

Você pode definir opções de impressão globalmente. Eu acho que isso deve funcionar:

Método 1:

pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

Método 2:

pd.options.display.max_columns = None
pd.options.display.max_rows = None

Isso permitirá que você veja todos os nomes e linhas das colunas quando estiver fazendo isso .head(). Nenhum nome da coluna será truncado.

Se você quiser ver apenas os nomes das colunas, pode fazer: cols = df.columns.tolist()


2
Alterar essas opções de exibição do pandas NÃO responde à pergunta; essas configurações não fazem com que data_all2.columns pare de truncar a saída. Eu sugiro que o questionador @ Nabih-Bawazir desmarque esta como a resposta.
— EEE

3
@EEE Não, responde à pergunta. Acabei de experimentar, ele exibe todas as colunas em vez de uma lista truncada. Ele não disse campo truncado, disse lista de colunas.
— rjurney

3
Ahh, você está certo. Eu estava errado. Obrigado, @rjurney. E desculpe YOLO. Eu estava fazendo df.columns em vez de df.head ()! Devo deletar meu comentário anterior incorreto?
— EEE

Sim, acho que sim.
— rjurney de

é muito melhor definir um valor finito como 500, caso contrário, demorará uma eternidade para ser executado se você imprimir um big dataframe
— Thomas G.

42

Para obter todos os nomes das colunas de um DataFrame, df_dataneste exemplo, você só precisa usar o comando df_data.columns.values. Isto irá mostrar-lhe uma lista com todos os nomes das colunas do seu Dataframe

Código:

df_data=pd.read_csv('../input/data.csv')
print(df_data.columns.values)

Resultado:

['PassengerId' 'Survived' 'Pclass' 'Name' 'Sex' 'Age' 'SibSp' 'Parch' 'Ticket' 'Fare' 'Cabin' 'Embarked']

Esta é a verdadeira resposta para esta pergunta, obrigado @ pink.slash
— Interlooper

Se eu também quiser ver os números das colunas, isso é possível? Meu df tem 200 colunas e eu gostaria de usar uma fração delas e estava pensando em usar os números em vez de escrever o nome de cada coluna.
— Mactilda

9

No console interativo, é fácil de fazer:

data_all2.columns.tolist()

Ou dentro de um script:

print(data_all2.columns.tolist())

6

Isto irá fazer o truque. Observe o uso de em display()vez de impressão.

with pd.option_context('display.max_rows', 5, 'display.max_columns', None): 
    display(my_df)

EDITAR:

O uso de displayé obrigatório porque as pd.option_contextconfigurações se aplicam apenas a displaye não a print.


Gosto que a withpalavra-chave aplique a opção apenas ao bloco abaixo. No entanto, funciona bem com print(). Por que eu precisaria usar em display()vez de print()?
— Vincent Agami

@VincentAgami O uso de display é necessário porque as configurações de pd.option_context se aplicam apenas à exibição e não à impressão. Eu atualizei a resposta para incluir esta informação.
— nico

3

O que funcionou para mim foi o seguinte:

pd.options.display.max_seq_items = None

Você também pode defini-lo como um número inteiro maior que o número de colunas.


2

Para obter todos os nomes das colunas, você pode iterar no data_all2.columns.

columns = data_all2.columns
for col in columns:
    print col

Você obterá todos os nomes das colunas. Ou você pode armazenar todos os nomes de coluna em outra variável de lista e depois imprimir a lista.


1

Se você quiser apenas ver todas as colunas, você pode fazer algo desse tipo como uma solução rápida

cols = data_all2.columns

agora cols se comportará como uma variável iterativa que pode ser indexada. por exemplo

cols[11:20]

1

Uma solução rápida e suja seria convertê-lo em uma string

print('\t'.join(data_all2.columns))

faria com que todos eles fossem impressos separados por tabulações Claro, observe que com 102 nomes, todos eles bastante longos, será um pouco difícil de ler



1

você pode tentar isso

pd.pandas.set_option('display.max_columns', None)

1

Não é uma resposta convencional, mas acho que você pode transpor o dataframe para olhar as linhas em vez das colunas. Eu uso isso porque acho que olhar para linhas é mais 'intuitivo' do que olhar para colunas:

data_all2.T

Isso deve permitir que você visualize todas as linhas. Esta ação não é permanente , apenas permite que você visualize a versão transposta do dataframe.

Se as linhas ainda estiverem truncadas, use print(data_all2.T)para ver tudo.


Não é uma resposta convencional, mas acho que você pode transpor o dataframe para olhar as linhas em vez das colunas. Tudo o que eles querem são os nomes das colunas, não? Se as linhas ainda estiverem truncadas, apenas use print (data_all2.T) para ver tudo. Como imprimir o resultado resolveria o problema? Você ainda não está imprimindo?
— AMC

1

A maneira mais fácil que encontrei é apenas

list(df.columns)

Pessoalmente, não gostaria de alterar os globais, não é com frequência que desejo ver os nomes de todas as colunas.


0

Esta é a minha maneira. Nunca tento centenas de colunas. Mas acho que funciona

your_dataframe.info()

0

Sei que é uma repetição, mas sempre acabo copiando, colando e modificando a resposta do YOLO:

pd.set_option('display.max_columns', 500)
pd.set_option('display.max_rows', 500)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.