Py Pandas.format(dataframe)
en tant que débutant de Python j'ai récemment découvert qu'avec Py 2.7 je peux faire quelque chose comme:
print '{:20,.2f}'.format(123456789)
qui donnera la sortie résultante:
123,456,789.00
je cherche maintenant à avoir un résultat similaire pour un DF pandas donc mon code était comme:
import pandas as pd
import random
data = [[random.random()*10000 for i in range(1,4)] for j in range (1,8)]
df = pd.DataFrame (data)
print '{:20,.2f}'.format(df)
Dans ce cas j'ai l'erreur:
Unknown format code 'f' for object of type 'str'
toutes les suggestions pour effectuer quelque chose comme <!--4 ?
comme maintenant mon idée est d'indexer le dataframe (c'est un petit), puis formater chaque float individuel à l'intérieur de lui, pourrait être assigner astype(str), et reconstruire le DF ... mais regarde ressemble tellement moche :-( et je ne suis même pas sûr que ça marchera ..
Qu'en pensez-vous ? Je suis coincé ... et j'aimerais avoir un meilleur format pour mes images de données quand celles-ci sont converties en grilles de reportlabs.
1 réponses
import pandas as pd
import numpy as np
data = np.random.random((8,3))*10000
df = pd.DataFrame (data)
pd.options.display.float_format = '{:20,.2f}'.format
print(df)
rendements (sortie aléatoire similaire)
0 1 2
0 4,839.01 6,170.02 301.63
1 4,411.23 8,374.36 7,336.41
2 4,193.40 2,741.63 7,834.42
3 3,888.27 3,441.57 9,288.64
4 220.13 6,646.20 3,274.39
5 3,885.71 9,942.91 2,265.95
6 3,448.75 3,900.28 6,053.93
La docstring pd.set_option
ou pd.describe_option
explique:
display.float_format: [default: None] [currently: None] : callable
The callable should accept a floating point number and return
a string with the desired format of the number. This is used
in some places like SeriesFormatter.
See core.format.EngFormatter for an example.