Como se pode modificar o formato da saída de uma operação de grupo em pandas que produz notação científica para números muito grandes?
Sei como formatar strings em python, mas não consigo aplicá-lo aqui.
df1.groupby('dept')['data1'].sum()
dept
value1 1.192433e+08
value2 1.293066e+08
value3 1.077142e+08
Isso suprime a notação científica se eu converter para string, mas agora estou pensando em como formatar o string e adicionar decimais.
sum_sales_dept.astype(str)
python
pandas
floating-point
scientific-notation
number-formatting
horatio1701d
fonte
fonte
dtypes
seus resultados?Respostas:
É verdade que a resposta que eu vinculei nos comentários não é muito útil. Você pode especificar seu próprio conversor de string dessa forma.
Não tenho certeza se essa é a maneira preferida de fazer isso, mas funciona.
Converter números em sequências puramente para fins estéticos parece uma péssima idéia, mas se você tiver um bom motivo, esta é uma maneira:
fonte
pandas.option_context
(consulte pandas.pydata.org/pandas-docs/stable/generated/… ).pd.set_option('display.float_format', lambda x: f'{x:,.3f}')
se você quiser um separador de mil também.Aqui está outra maneira de fazer isso, semelhante à resposta de Dan Allan, mas sem a função lambda:
ou
fonte
Você pode usar a função round apenas para suprimir a notação científica de um dataframe específico:
ou você pode suprimir globalmente:
fonte
Se você deseja estilizar a saída de um quadro de dados em uma célula do notebook jupyter, pode definir o estilo de exibição por quadro de dados:
Veja a documentação aqui .
fonte
Se você deseja usar os valores, digamos, como parte do csvfile csv.writer, os números podem ser formatados antes de criar uma lista:
fonte