def test_FmtAppendTotalsRow_modify_dataframe(): fmt = pbtf.FmtAppendTotalsRow() res = fmt._modify_dataframe(df) expected = pd.Series([9., 12., 15.], name='Total', index=[pbtf.INDEX_COL_NAME, 'aa', 'bb']) assert expected.equals(res.ix[-1]) fmt = pbtf.FmtAppendTotalsRow(operator=pbtf.OP_MEAN) res = fmt._modify_dataframe(df) expected = pd.Series([3., 4., 5.], name='Total', index=[pbtf.INDEX_COL_NAME, 'aa', 'bb']) assert expected.equals(res.ix[-1]) fmt = pbtf.FmtAppendTotalsRow(operator=pbtf.OP_NONE) res = fmt._modify_dataframe(df) expected = pd.Series(['', '', ''], name='Total', index=[pbtf.INDEX_COL_NAME, 'aa', 'bb']) assert expected.equals(res.ix[-1]) fmt = pbtf.FmtAppendTotalsRow(row_name=TEST_STRING) res = fmt._modify_dataframe(df) expected = pd.Series([9., 12., 15.], name=TEST_STRING, index=[pbtf.INDEX_COL_NAME, 'aa', 'bb']) assert expected.equals(res.ix[-1]) fmt = pbtf.FmtAppendTotalsRow(total_columns=['bb']) res = fmt._modify_dataframe(df) expected = pd.Series(['', '', 15.], name='Total', index=[pbtf.INDEX_COL_NAME, 'aa', 'bb']) assert expected.equals(res.ix[-1])
def test_FmtAppendTotalsRow_cell_css(): row_name = TEST_STRING fmt = pbtf.FmtAppendTotalsRow(row_name=row_name) data = FormatterData(None, pbtf.HEADER_ROW_NAME, None, df) res = fmt._create_cell_level_css(data) assert res is None fmt = pbtf.FmtAppendTotalsRow(bold=True, row_name=row_name, background_color=colors.LIGHT_GREY, font_color=colors.LIGHT_GREY) data = FormatterData(None, row_name, None, df) res = fmt._create_cell_level_css(data) assert pbtf.CSS_BOLD in res assert pbtf.CSS_COLOR + colors.css_color(colors.LIGHT_GREY) in res assert pbtf.CSS_BACKGROUND_COLOR + colors.css_color(colors.LIGHT_GREY) in res assert 'border-top:' in res assert 'solid' in res fmt = pbtf.FmtAppendTotalsRow(row_name=row_name, bold=None, background_color=None, font_color=None, hline_color=colors.LIGHT_ORANGE, hline_style=TEST_STRING) data = FormatterData(None, row_name, None, df) res = fmt._create_cell_level_css(data) assert 'border-top: ' + TEST_STRING + ' ' + colors.css_color(colors.LIGHT_ORANGE) fmt = pbtf.FmtAppendTotalsRow(row_name=row_name, bold=None, background_color=None, font_color=None) data = FormatterData(None, 'a', None, df) res = fmt._create_cell_level_css(data) assert res is None
def test_FmtAppendTotalsColumn_cell_css(): column_name = TEST_STRING fmt = pbtf.FmtAppendTotalsColumn(column_name=column_name) data = FormatterData(None, pbtf.HEADER_ROW_NAME, None, df) res = fmt._create_cell_level_css(data) assert res is None fmt = pbtf.FmtAppendTotalsColumn(bold=True, column_name=column_name, background_color=colors.LIGHT_GREY, font_color=colors.LIGHT_GREY) data = FormatterData(None, None, column_name, df) res = fmt._create_cell_level_css(data) assert pbtf.CSS_BOLD in res assert pbtf.CSS_COLOR + colors.css_color(colors.LIGHT_GREY) in res assert pbtf.CSS_BACKGROUND_COLOR + colors.css_color( colors.LIGHT_GREY) in res fmt = pbtf.FmtAppendTotalsRow(row_name=column_name, bold=None, background_color=None, font_color=None) data = FormatterData(None, 'a', None, df) res = fmt._create_cell_level_css(data) assert res is None
def test_df_to_jinja_table_add_extra_formatters(): fmt_heatmap = blformat.FmtHeatmap(threshold=0., axis=0) fmt_add_totals_mean = blformat.FmtAppendTotalsRow(row_name='Sum', operator=blformat.OP_SUM, bold=True) fmt_fontsize_20 = blformat.FmtFontsize(fontsize=20) formatters = [fmt_fontsize_20, fmt_heatmap, fmt_add_totals_mean] return Block(FLAT_DATA, formatters=formatters, use_default_formatters=False)
def test_FmtAppendTotalsRow_mixed_datatypes(): df = pd.util.testing.makeMixedDataFrame() fmt = pbtf.FmtAppendTotalsRow(total_columns=['A']) res = fmt._modify_dataframe(df) last_row_expected = pd.Series({ 'A': 10., 'B': '', 'C': '', 'D': '' }, name="Total") pd.util.testing.assert_series_equal(res.iloc[-1], last_row_expected)
def test_formatters_with_operator_on_df_with_nans_replaces(): df = pd.DataFrame(np.arange(8, dtype=float).reshape(2, 4), index=['a', 'b'], columns=['aa', 'bb', 'cc', 'dd']) df.iloc[0, 0] = np.nan fmt_nan_replace = tf.FmtReplaceNaN() fmt_sum_rows = tf.FmtAppendTotalsRow() fmt_sum_columns = tf.FmtAppendTotalsColumn() b_no_replace = Block(df, formatters=[fmt_sum_rows, fmt_sum_columns], use_default_formatters=False) b_replace = Block(df, formatters=[fmt_nan_replace, fmt_sum_rows, fmt_sum_columns], use_default_formatters=False) assert_series_equal(b_replace.df.iloc[:, -1], b_no_replace.df.iloc[:, -1], check_dtype=False) assert_series_equal(b_replace.df.iloc[-1, :], b_no_replace.df.iloc[-1, :], check_dtype=False)