How Chen
How Chen

Reputation: 1370

Format the output in Pandas

I have a excel sheet:

enter image description here

I read it out:

import pandas as pd
import numpy as np

excel_file = 'test.xlsx'

df = pd.read_excel(excel_file, sheet_name=0)
print(df)

it shows:

  name         value
0    a  10000.000000
1    b  20000.000000
2    c  30000.000000
3    d  40000.000000
4    e  50000.000000
5    f      1.142857
6    g      1.285714

how can I format the number output to like %.2f, can I format it directly by print (df) like add something in print like %.2f, or I must first modify it content and commit back to df and then print again?

UPDATE:

I try the answer below, df['value'].apply("{0:.2f}".format) doesn't work:

import pandas as pd
import numpy as np

excel_file = 'test.xlsx'

df = pd.read_excel(excel_file, sheet_name=0)
print(df['value'])
df['value'].apply("{0:.2f}".format)
print(df['value'])
print(df)

it shows:

0    10000.000000          
1    20000.000000          
2    30000.000000          
3    40000.000000          
4    50000.000000          
5        1.142857          
6        1.285714          
Name: value, dtype: float64
0    10000.000000          
1    20000.000000          
2    30000.000000          
3    40000.000000          
4    50000.000000          
5        1.142857          
6        1.285714          
Name: value, dtype: float64
  name         value       
0    a  10000.000000       
1    b  20000.000000       
2    c  30000.000000       
3    d  40000.000000       
4    e  50000.000000       
5    f      1.142857       
6    g      1.285714       

pd.set_option('display.float_format', lambda x: '%.2f' % x) works:

0   10000.00               
1   20000.00               
2   30000.00               
3   40000.00               
4   50000.00               
5       1.14               
6       1.29               
Name: value, dtype: float64
  name    value            
0    a 10000.00            
1    b 20000.00            
2    c 30000.00            
3    d 40000.00            
4    e 50000.00            
5    f     1.14            
6    g     1.29            

Upvotes: 1

Views: 815

Answers (2)

Sreeram TP
Sreeram TP

Reputation: 11917

You can change the float_format of pandas in pandas set_option like this

pd.set_option('display.float_format', lambda x: '%.2f' % x)

If you want to change the formating of just one column, you can do a apply and change formating like this

df['age'].apply("{0:.2f}".format)

# Output

0    10000.00
1    20000.00
2    30000.00
3    40000.00
4    50000.00
5        1.14
6        1.29
Name: age, dtype: object

Upvotes: 2

Chris Adams
Chris Adams

Reputation: 18647

The default precision is 6. You can override this this with pandas.set_option:

pd.set_option('display.precision', 2)

Upvotes: 1

Related Questions