Форматирование панелей данных pandas, отображаемых в блокнотах Jupyter, с разделенными запятыми значениями и красным шрифтом для отрицательных значений - PullRequest
0 голосов
/ 08 февраля 2019

Выполнение моего скрипта в блокнотах jupyter, который в результате возвращает 4 кадра данных панд.Выходные таблицы содержат большие числа, и визуально это сложно интерпретировать без некоторого форматирования.Я хочу закрасить отрицательные значения красным шрифтом и всеми числами, разделенными 1000 разделителями-запятыми.

Если я установлю опцию pandas для отображения форматов с плавающей запятой

(pd.options.display.float_format = '{:20,.0f}'.format)

Я получаю результат, разделенный запятыми.

Однако, если я использую стилизацию CSS для окрашивания отрицательных значений в красный, кажется, что это переопределяет настройки формата с плавающей запятой, и я теряю разделители запятых.(https://pandas.pydata.org/pandas-docs/stable/user_guide/style.html)

Пример сценария:

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

import pandas as pd

pd.options.display.float_format = '{:20,.0f}'.format

def color_negative_red(val):
    color = 'red' if val < 0 else 'black'
    return 'color: %s' % color


a = [-1000, -15000, 120000, 3000]
b = [5000, 6000000, -350000, 45000]


df = pd.DataFrame({'A':a, 'B':b})

df1 = df.style.format('{:,.0f}')
df2 = df.style.applymap(color_negative_red)

df1
df2

Я могу вернуть их независимо, но не могу выполнить оба события форматирования для одного и того же кадра данных. Должно быть более простое решение?

...