Как мне отобразить значения с плавающей запятой как валюту с отрицательным знаком перед валютой

#python #pandas

#python #панды

Вопрос:

рассмотрим pd.Series s

 s = pd.Series([-1.23, 4.56])
s

0   -1.23
1    4.56
dtype: float64
  

Я могу форматировать числа с плавающей запятой с display.float_format помощью опции pandas

 with pd.option_context('display.float_format', '${:,.2f}'.format):
    print s

0   $-1.23
1    $4.56
dtype: float64
  

Но как мне отформатировать его таким образом, чтобы я получал - знак перед $

 0   -$1.23
1    $4.56
dtype: float64
  

Ответ №1:

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

 def formatfunc(*args, **kwargs):
    value = args[0]
    if value >= 0:
        return '${:,.2f}'.format(value)
    else:
        return '-${:,.2f}'.format(abs(value))

with pd.option_context('display.float_format', formatfunc):
    print(s)
  

И вы получаете:

 0   -$1.23
1    $4.56
dtype: float64