Как добавить два десятичных ноля при экспорте фрейма данных как Excel и добавить процент только для значений, не тире - PullRequest
0 голосов
/ 19 марта 2020

У меня есть датафрейм, такой как

A%  B %
2   3
-   2.1
100 0
-   5

Я хочу, чтобы экспортированный вывод Excel был похож на

A%        B%
2.00%     3.00%
-         2.10%
100.00%   0.00%
-         5.00%

У меня есть эти A% и B% с использованием следующей логики c

((df['some_values1'] / df['some_values2']) *100.00).round(2).astype(str)+('%')

, но , когда я делаю превосходство df the - конвертируется в nan, и такие однозначные числа, как 2, 100, 0, не имеют двух десятичных знаков, таких как 2.00% 100.00% & 0.00 % это только 2%, 100% и 0% , тогда как он отлично работает с 2.1 и другими дробными цифрами.

Заранее благодарен за любую помощь.

1 Ответ

0 голосов
/ 19 марта 2020

Вы можете определить функцию, которая соответствует вашим потребностям:

def to_percent_format(p):
    if str(p).strip() != "-":
        return "{:.2%}".format(p/100)
    else:
        return p.strip() 

Действительно:

>>> to_percent_format(3)
'3.00%'
>>> to_percent_format("-")
'-'

И просто применить ее к вашему фрейму данных!

df.apply(to_percent_format, axis=1)
...