Отформатируйте вывод в Pandas - PullRequest
1 голос
/ 29 марта 2019

У меня есть лист Excel:

enter image description here

Я прочитал его:

import pandas as pd
import numpy as np

excel_file = 'test.xlsx'

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

показывает:

  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

как я могу отформатировать выводимое число, например %.2f, можно ли отформатировать его напрямую с помощью print (df), например добавить что-то в печать, например %.2f, или я должен сначала изменить его содержимое и зафиксировать обратно df а затем снова печатать?

ОБНОВЛЕНИЕ:

Я пытаюсь ответить ниже, df['value'].apply("{0:.2f}".format) не работает:

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)

показывает:

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) работ:

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            

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Вы можете изменить float_format панд в pandas set_option следующим образом:

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

Если вы хотите изменить форматирование только одного столбца, вы можете сделать apply и изменить форматирование следующим образом

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
1 голос
/ 29 марта 2019

По умолчанию precision равно 6. Вы можете переопределить это с помощью pandas.set_option:

pd.set_option('display.precision', 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...