Как отформатировать числа на основе условия строки в Pandas to_html - PullRequest
0 голосов
/ 09 октября 2018

У меня есть фрейм данных со столбцами мер страны и значений:

Country| Measures| Value|
US    |Sales    |10000.000
US    |Share %  |0.10265
US    |Price    |15.82564
UK    |Sales    |10500.000
UK    |Share %  |0.30265
UK    |Price    |13.72564

Я загружаю фрейм данных из базы данных, в которой число с плавающей запятой до 6 цифр, я хочу ниже fomat в html

Country| Measures |Values
US    |Sales    |10000
US    |Share %  |10.2%
US    |Price    |15.83
UK    |Sales    |10500
UK    |Share %  |30.27%
UK    |Price    |13.72

Используя параметр 'float_format' или 'formatters' функции df.to_html, я могу преобразовать все числа в желаемый формат или формат, соответствующий конкретному столбцу, соответственно

ниже кода, который я использовал в форматировании, специфичном для столбца, где у меня есть доля и цена встолбцы не в строках

df.to_html(index=False, formatters={ 'Share %': '{:,.1%}'.format,
                                                      'Price': '{:,.1f}'.format})

Но здесь мое требование - отформатировать на основе строк

Я хочу

  1. номер продажи в целых числах
  2. Число в процентах с 2 десятичными числами
  3. Число с цифрами в 2 десятичных числах

Есть ли способ достичь этого?

1 Ответ

0 голосов
/ 09 октября 2018

Вы можете использовать форматирование строки

fmap = dict(
    Sales='{:0.0f}'.format,
    Price='{:0.2f}'.format,
    Share='{:0.2%}'.format
)

df.assign(Value=[fmap[m](v) for m, v in zip(df.Measures, df.Value)])

  Country Measures   Value
0      US    Sales   10000
1      US    Share  10.27%
2      US    Price   15.83
3      UK    Sales   10500
4      UK    Share  30.26%
5      UK    Price   13.73

Спецификация альтернативного словаря

fmap = {
    'Sales': '{:0.0f}'.format,
    'Price': '{:0.2f}'.format,
    'Share': '{:0.2%}'.format
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...