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?

Nabih Bawazir
fonte

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

YOLO
fonte
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']
pink.slash
fonte
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())
EEE
fonte
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.

nico
fonte
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.

S. Tibbitts
fonte
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.

Ashwani Shakya
fonte
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]
Rao Sahab
fonte
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

David L
fonte
1

você pode tentar isso

pd.pandas.set_option('display.max_columns', None)
naimur978
fonte
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.

Um homem
fonte
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.

Sherman
fonte
0

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

your_dataframe.info()
Ichsan
fonte
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)
Thomas G.
fonte