web-dev-qa-db-fra.com

Arrondissez chaque nombre dans un Python pandas trame de données par 2 décimales)

Cela fonctionne p_table.apply(pd.Series.round) mais il n'a pas de décimales

La documentation dit

import pandas as pd

Series.round(decimals=0, out=None)

j'ai essayé cette p_table.apply(pd.Series.round(2)) mais obtenez cette erreur:

unbound method round() must be called with Series instance as first argument (got int instance instead)

Comment arrondir tous les éléments du bloc de données à deux décimales?

[EDIT] Compris.

import numpy as np
np.round(p_table, decimals=2)
11
Tristan Forward
import numpy as np
np.round(p_table, decimals=2)
14
Tristan Forward

Depuis la version 0.17.0, Vous pouvez faire .round(n)

df.round(2)
      0     1     2     3
0  0.06  0.67  0.77  0.71
1  0.80  0.56  0.97  0.15
2  0.03  0.59  0.11  0.95
3  0.33  0.19  0.46  0.92

df
          0         1         2         3
0  0.057116  0.669422  0.767117  0.708115
1  0.796867  0.557761  0.965837  0.147157
2  0.029647  0.593893  0.114066  0.950810
3  0.325707  0.193619  0.457812  0.920403
13
piroot
        A       B    C
0       t       8    10.958904
1       w       2    98.630137

Pour arrondir la colonne C, vous pouvez utiliser ceci:

df['c']=df['c'].apply(lambda x:round(x,2))

La sortie sera:

        A       B    C
0       t       8    10.96
1       w       2    98.63
2
Abhinav Vajpeyi

que: data.apply(lambda x: np.round(x, decimals=2)) --- timeit.timer pour 100x: 0,00356676544494

est le même, mais plus lent, car cela: np.round(data,decimals=2) --- timeit.timer pour 100x: 0.000921095

par exemple, les deux donnent:

                    x     y     z
Input Sequence                   
1                5.60  0.85 -6.50
2                5.17  0.72 -6.50
3                5.60  0.89 -6.28
4                5.17  0.76 -6.29

pour les données:

                      x       y       z
Input Sequence                         
1                5.6000  0.8519 -6.5000
2                5.1730  0.7151 -6.5000
3                5.6000  0.8919 -6.2794
4                5.1724  0.7551 -6.2888
5                5.6000  0.9316 -6.0587
2
user1839053

Vous trouverez ci-dessous un exemple de méthode possible reproductible à l'aide de la fonction pandasround .

# importing pandas as pd 
import pandas as pd 


# generate sample  dataframe  
df = pd.DataFrame(np.random.random([5, 4]), columns =["A", "B", "C"]) 

# use pandas dataframe.round()function to round off all the decimal values to 2 decimal

df.round(2) 

# If you want to customize the round off by individual columns 
df.round({"A":1, "B":2, "C":3}) 
0
ewalel