Considere este exemplo:
import pandas as pd
df = pd.DataFrame({
"LIDSA": [0, 1, 2, 3],
"CAE": [3, 5, 7, 9],
"FILA": [1, 2, 3, 4], # 2 is default, so table idx 1 is default
"VUAMA": [0.5, 1.0, 1.5, 2.0],
})
df_colnames = { # https://stackoverflow.com/q/48243818
"LIDSA": "Lorem ipsum dolor sit amet",
"CAE": "Consectetur adipiscing elit",
"FILA": "Fusce imperdiet libero arcu",
"VUAMA": "Vitae ultricies augue molestie ac",
}
# "Pandas autodetects the size of your terminal window if you set pd.options.display.width = 0" https://stackoverflow.com/q/11707586
with pd.option_context('display.max_rows', None, 'display.max_columns', None, 'display.width', 0, 'max_colwidth', 20, 'display.float_format', "{:.2f}".format):
df_str = df.rename(df_colnames,axis=1).to_string()
print(df_str)
Isso resulta na impressão do terminal stdout, no momento com 111 caracteres de largura:
Lorem ipsum dolor sit amet Consectetur adipiscing elit Fusce imperdiet libero arcu Vitae ultricies augue
molestie ac
0 0 3 1
0.50
1 1 5 2
1.00
2 2 7 3
1.50
3 3 9 4
2.00
Portanto, apenas a última coluna foi quebrada (e correspondentemente, os valores para ela). Eu teria preferido que cada nome de coluna longo fosse quebrado por linha/quebrado em palavras com, digamos, 20 caracteres e, em seguida, os valores fossem gerados de forma correspondente, algo como:
Lorem ipsum dolor Consectetur Fusce imperdiet Vitae ultricies
sit amet adipiscing elit libero arcu augue molestie ac
0 0 3 1 0.50
1 1 5 2 1.00
2 2 7 3 1.50
3 3 9 4 2.00
Eu pensei 'max_colwidth', 20
que faria isso, mas aparentemente não faz.
Eu até tentei adicionar quebras de linha explícitas nos nomes longos das colunas, mas elas são renderizadas como \n
e o nome da coluna ainda está em uma linha (conforme observado também em Quebras de linha nos nomes das colunas do pandas )
Então, é possível "quebrar palavras"/"quebra de linha" em nomes de colunas longas no Pandas para saída de string de texto simples?