Gostaria de exibir um dataframe de pandas com um determinado formato usando print()
e o IPython display()
. Por exemplo:
df = pd.DataFrame([123.4567, 234.5678, 345.6789, 456.7890],
index=['foo','bar','baz','quux'],
columns=['cost'])
print df
cost
foo 123.4567
bar 234.5678
baz 345.6789
quux 456.7890
Eu gostaria de de alguma forma coagir isso a imprimir
cost
foo $123.46
bar $234.57
baz $345.68
quux $456.79
sem precisar modificar os dados em si ou criar uma cópia, basta alterar a maneira como eles são exibidos.
Como posso fazer isso?
cost
a única coluna flutuante ou existem outras colunas flutuantes que não devem ser formatadas$
?Respostas:
rendimentos
mas isso só funciona se você quiser que cada flutuador seja formatado com um cifrão.
Caso contrário, se você quiser formatação em dólar apenas para alguns carros alegóricos, acho que precisará pré-modificar o quadro de dados (convertendo esses carros alegóricos em seqüências de caracteres):
rendimentos
fonte
with pd.option_context('display.float_format', '${:,.2f}'.format'):
'
antes do parêntese de fechamento no comentário de @AndreHolzner; caso contrário, funciona como um encanto!Se você não quiser modificar o quadro de dados, poderá usar um formatador personalizado para essa coluna.
rendimentos
fonte
pd.options.display.float_format = '${:,.2f}'.format
A partir do Pandas 0.17, agora existe um sistema de estilo que fornece essencialmente visualizações formatadas de um DataFrame usando cadeias de caracteres de formato Python :
que exibe
Este é um objeto de exibição; o próprio DataFrame não altera a formatação, mas as atualizações no DataFrame são refletidas na exibição:
No entanto, parece ter algumas limitações:
Adicionar novas linhas e / ou colunas no local parece causar inconsistência na exibição estilizada (não adiciona rótulos de linha / coluna):
que parece ok, mas:
A formatação funciona apenas para valores, não para entradas de índice:
fonte
Semelhante ao unutbu acima, você também pode usar
applymap
o seguinte:fonte
df.to_csv()
para garantir que todas as colunas do meu.csv
arquivo tenham a mesma "largura de dígito". Obrigado!Eu gosto de usar pandas.apply () com formato python ().
Além disso, pode ser facilmente usado com várias colunas ...
fonte
Você também pode definir o código de idioma para sua região e definir float_format para usar um formato de moeda. Isso definirá automaticamente o sinal de $ para a moeda nos EUA.
fonte
resumo:
fonte