Je voudrais afficher un dataframe pandas avec un format donné en utilisant print()
et IPython display()
. Par exemple:
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
Je voudrais en quelque sorte contraindre cela à l'impression
cost
foo $123.46
bar $234.57
baz $345.68
quux $456.79
sans avoir à modifier les données elles-mêmes ou à créer une copie, changez simplement la façon dont elles sont affichées.
Comment puis-je faire ceci?
cost
la seule colonne flottante ou y a-t-il d'autres colonnes flottantes qui ne doivent pas être formatées$
?Réponses:
rendements
mais cela ne fonctionne que si vous voulez que chaque flottant soit formaté avec un signe dollar.
Sinon, si vous voulez un formatage en dollars pour certains flottants uniquement, je pense que vous devrez pré-modifier le dataframe (convertir ces flottants en chaînes):
rendements
la source
with pd.option_context('display.float_format', '${:,.2f}'.format'):
'
avant la parenthèse fermante sur le commentaire de @AndreHolzner; sinon, ça marche comme un charme!Si vous ne souhaitez pas modifier le dataframe, vous pouvez utiliser un formateur personnalisé pour cette colonne.
rendements
la source
pd.options.display.float_format = '${:,.2f}'.format
Depuis Pandas 0.17, il existe maintenant un système de style qui fournit essentiellement des vues formatées d'un DataFrame à l'aide de chaînes au format Python :
qui affiche
Ceci est un objet de vue; le DataFrame lui-même ne change pas la mise en forme, mais les mises à jour du DataFrame sont reflétées dans la vue:
Cependant, il semble avoir certaines limites:
L'ajout de nouvelles lignes et / ou colonnes en place semble entraîner une incohérence dans la vue stylisée (n'ajoute pas d'étiquettes de ligne / colonne):
ce qui semble correct mais:
Le formatage fonctionne uniquement pour les valeurs, pas pour les entrées d'index:
la source
Semblable à unutbu ci-dessus, vous pouvez également utiliser
applymap
comme suit:la source
df.to_csv()
pour m'assurer que toutes les colonnes de mon.csv
fichier ont la même «largeur de chiffre». Merci!J'aime utiliser pandas.apply () avec le format python ().
En outre, il peut être facilement utilisé avec plusieurs colonnes ...
la source
Vous pouvez également définir les paramètres régionaux de votre région et définir float_format pour utiliser un format de devise. Cela définira automatiquement le signe $ pour la devise aux États-Unis.
la source
résumé:
la source