{ "cells": [ { "cell_type": "markdown", "id": "individual-dubai", "metadata": {}, "source": [ "### `ipydatagrid` support nested columns/rows out of the box. \n", "#### Just pass a MultiIndex pandas DataFrame and you're set!" ] }, { "cell_type": "code", "execution_count": null, "id": "ultimate-supply", "metadata": {}, "outputs": [], "source": [ "import ipydatagrid as ipg\n", "import pandas as pd\n", "import numpy as np\n", "\n", "# Columns\n", "col_top_level = [\n", " \"VeryLongValueFactors\",\n", " \"VeryLongValueFactors\",\n", " \"Even Longer Momentum Factors\",\n", " \"Even Longer Momentum Factors\",\n", "]\n", "col_bottom_level = [\"Factor_A\", \"Factor_B\", \"Factor_C\", \"Factor_D\"]\n", "\n", "# Rows\n", "row_top_level = [\"Sector 1\", \"Sector 1\", \"Sector 2\", \"Sector 2\"]\n", "row_bottom_level = [\"Security A\", \"Security B\", \"Security C\", \"Security D\"]\n", "\n", "header_renderer = ipg.TextRenderer(\n", " background_color=\"moccasin\",\n", " text_color=\"navy\",\n", " vertical_alignment=\"top\",\n", " horizontal_alignment=\"center\",\n", ")\n", "\n", "default_renderer = ipg.TextRenderer(\n", " text_color=ipg.VegaExpr(\"cell.value <= 0 ? 'purple' : 'green'\")\n", ")\n", "\n", "nested_df = pd.DataFrame(\n", " np.random.randn(4, 4).round(4),\n", " columns=pd.MultiIndex.from_arrays([col_top_level, col_bottom_level]),\n", " index=pd.MultiIndex.from_arrays(\n", " [row_top_level, row_bottom_level], names=(\"Sector\", \"Ticker\")\n", " ),\n", ")\n", "\n", "nested_grid = ipg.DataGrid(\n", " nested_df,\n", " base_column_size=80,\n", " base_column_header_size=35,\n", " base_row_header_size=80,\n", " layout={\"height\": \"180px\"},\n", " header_renderer=header_renderer,\n", " default_renderer=default_renderer,\n", ")\n", "\n", "nested_grid" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.5" } }, "nbformat": 4, "nbformat_minor": 5 }