Comment modifier le format de sortie d'une opération groupby dans les pandas qui produit une notation scientifique pour de très grands nombres?
Je sais comment faire le formatage de chaînes en python mais je suis perdu quand il s'agit de l'appliquer ici.
df1.groupby('dept')['data1'].sum()
dept
value1 1.192433e+08
value2 1.293066e+08
value3 1.077142e+08
Cela supprime la notation scientifique si je convertis en chaîne, mais maintenant je me demande simplement comment formater une chaîne et ajouter des décimales.
sum_sales_dept.astype(str)
python
pandas
floating-point
scientific-notation
number-formatting
horatio1701d
la source
la source
dtypes
vos résultats?Réponses:
Certes, la réponse que j'ai liée dans les commentaires n'est pas très utile. Vous pouvez spécifier votre propre convertisseur de chaîne comme ceci.
Je ne sais pas si c'est la meilleure façon de procéder, mais cela fonctionne.
La conversion de nombres en chaînes à des fins purement esthétiques semble être une mauvaise idée, mais si vous avez une bonne raison, c'est dans un sens:
la source
pandas.option_context
(voir pandas.pydata.org/pandas-docs/stable/generated/… ).pd.set_option('display.float_format', lambda x: f'{x:,.3f}')
si vous vouliez aussi un séparateur de milliers.Voici une autre façon de le faire, similaire à la réponse de Dan Allan mais sans la fonction lambda:
ou
la source
Vous pouvez utiliser la fonction round juste pour supprimer la notation scientifique pour une trame de données spécifique:
ou vous pouvez supprimer est globalement en:
la source
Si vous souhaitez styliser la sortie d'une trame de données dans une cellule de notebook Jupyter, vous pouvez définir le style d'affichage par trame de données:
Consultez la documentation ici .
la source
Si vous souhaitez utiliser les valeurs, par exemple dans le cadre de csvfile csv.writer, les nombres peuvent être formatés avant de créer une liste:
la source