Как я могу отформатировать html-отображение IPython pandas данных, чтобы
- правильны.
- номера имеют запятые в качестве разделителя тысяч.
- большие поплавки не имеют десятичных знаков
Я понимаю, что numpy
имеет возможность set_printoptions
, где я могу:
int_frmt:lambda x : '{:,}'.format(x)
np.set_printoptions(formatter={'int_kind':int_frmt})
и аналогичным образом для других типов данных.
Но IPython не выбирает эти параметры форматирования при отображении dataframes в html. Мне все еще нужно иметь
pd.set_option('display.notebook_repr_html', True)
но с 1, 2, 3, как указано выше.
Изменить: Ниже мое решение для 2 и 3 (не уверен, что это лучший способ), но мне все же нужно выяснить, как сделать столбцы номеров правильными.
from IPython.display import HTML
int_frmt = lambda x: '{:,}'.format(x)
float_frmt = lambda x: '{:,.0f}'.format(x) if x > 1e3 else '{:,.2f}'.format(x)
frmt_map = {np.dtype('int64'):int_frmt, np.dtype('float64'):float_frmt}
frmt = {col:frmt_map[df.dtypes[col]] for col in df.columns if df.dtypes[col] in frmt_map.keys()}
HTML(df.to_html(formatters=frmt))