Como posso imprimir um dataframe do pandas como uma boa tabela baseada em texto, como a seguir?
+------------+---------+-------------+
| column_one | col_two | column_3 |
+------------+---------+-------------+
| 0 | 0.0001 | ABCD |
| 1 | 1e-005 | ABCD |
| 2 | 1e-006 | long string |
| 3 | 1e-007 | ABCD |
+------------+---------+-------------+
tabulate([list(row) for row in df.values], headers=list(df.columns))
para se livrar do índiceprint(tabulate(df, **kwargs))
e não simplesmentetabulate(df, **kwargs)
; o último mostrará todas as novas linhas\n
....showindex=False
Uma abordagem simples é produzir como html, o que o pandas faz fora da caixa :
fonte
pandas> = 1,0
Se você deseja que uma função embutida despeje seus dados em alguma marcação do github, agora você tem uma. Dê uma olhada em
to_markdown
:Aqui está o que parece no github:
Observe que você ainda precisará ter o
tabulate
pacote instalado.fonte
Se você estiver no bloco de notas Jupyter, poderá executar o código a seguir para exibir interativamente o dataframe em uma tabela bem formatada.
Esta resposta se baseia na resposta to_html ('temp.html') acima, mas em vez de criar um arquivo exibe a tabela bem formatada diretamente no bloco de notas:
Crédito para este código devido ao exemplo em: Mostrar DataFrame como tabela no iPython Notebook
fonte
Você pode usar o prettytable para renderizar a tabela como texto. O truque é converter o data_frame em um arquivo csv na memória e fazer com que ele seja lido de maneira adequada. Aqui está o código:
fonte
prettytable
é amplamente considerado abandonware. Vergonha também, pois era um belo pacote. :(prettytable
não teve um lançamento desde 6 de abril de 2013.tabulate
é seu predecessor espiritual e tem lançamentos regulares, sendo o mais recente em 24 de janeiro de 2019.Usei a resposta de Ofer por um tempo e a achei ótima na maioria dos casos. Infelizmente, devido a inconsistências entre o to_csv do pandas e o from_csv do prettytable, tive que usar o prettytable de uma maneira diferente.
Um caso de falha é um dataframe contendo vírgulas:
Prettytable levanta um erro no formulário:
A função a seguir trata desse caso:
Se você não se importa com o índice, use:
fonte
format_for_print()
função não parece estar imprimindo o índice do Pandas DataFrame. Eu defino o índice usando,df.index.name = 'index'
mas isso não imprime a coluna do índice com um nome.Seguindo a resposta de Mark, se você não estiver usando o Jupyter por algum motivo, por exemplo, se quiser fazer alguns testes rápidos no console, você pode usar o
DataFrame.to_string
método, que funciona a partir de - pelo menos - Pandas 0.12 (2014) .fonte
Talvez você esteja procurando algo assim:
fonte
Eu queria uma impressão em papel de um dataframe, mas também queria adicionar alguns resultados e comentários na mesma página. Eu trabalhei com os itens acima e não consegui o que queria. Acabei usando as instruções file.write (df1.to_csv ()) e file.write (",,, blah ,,,,,, blah") para colocar meus extras na página. Quando abri o arquivo csv, ele foi direto para uma planilha que imprimiu tudo no ritmo e formato certos.
fonte