Skip to content

Instantly share code, notes, and snippets.

@andjc
Created April 14, 2024 20:52
Show Gist options
  • Save andjc/490b9659ffd1ccbf12c67be525595c57 to your computer and use it in GitHub Desktop.
Save andjc/490b9659ffd1ccbf12c67be525595c57 to your computer and use it in GitHub Desktop.
localised_dataframe_persian.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/andjc/490b9659ffd1ccbf12c67be525595c57/localised_dataframe_persian.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "gxpFFurUYbRe"
},
"source": [
"# Localised display of Pandas dataframe: Persian example"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "wYEM9zPRYbRf"
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import datetime as datetime\n",
"import icu\n",
"from functools import partial"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "a1Kc4L3mYbRg"
},
"source": [
"Create a sample dataframe with 3 columns, with\n",
"\n",
"1. timezone aware datetime objects\n",
"2. integers\n",
"3. floating point numbers"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "hnug2kCsYbRh",
"outputId": "ab07df4a-0db8-4c18-992c-098b7a53c338"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 10 entries, 0 to 9\n",
"Data columns (total 3 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 date 10 non-null datetime64[ns, Asia/Tehran]\n",
" 1 A 10 non-null int64 \n",
" 2 B 10 non-null float64 \n",
"dtypes: datetime64[ns, Asia/Tehran](1), float64(1), int64(1)\n",
"memory usage: 372.0 bytes\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>date</th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2020-02-26 00:00:00+03:30</td>\n",
" <td>174173</td>\n",
" <td>12.846034</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2020-03-29 00:00:00+04:30</td>\n",
" <td>228047</td>\n",
" <td>11.888131</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2020-04-13 00:00:00+04:30</td>\n",
" <td>299100</td>\n",
" <td>16.293926</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2020-08-22 00:00:00+04:30</td>\n",
" <td>90780</td>\n",
" <td>12.517240</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2020-12-11 00:00:00+03:30</td>\n",
" <td>132266</td>\n",
" <td>18.328762</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>2021-04-06 00:00:00+04:30</td>\n",
" <td>133163</td>\n",
" <td>11.017089</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>2021-12-09 00:00:00+03:30</td>\n",
" <td>80691</td>\n",
" <td>10.571072</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>2022-02-19 00:00:00+03:30</td>\n",
" <td>67384</td>\n",
" <td>14.681511</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>2022-09-21 00:00:00+04:30</td>\n",
" <td>208446</td>\n",
" <td>10.899890</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>2022-10-12 00:00:00+03:30</td>\n",
" <td>278853</td>\n",
" <td>12.837482</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" date A B\n",
"0 2020-02-26 00:00:00+03:30 174173 12.846034\n",
"1 2020-03-29 00:00:00+04:30 228047 11.888131\n",
"2 2020-04-13 00:00:00+04:30 299100 16.293926\n",
"3 2020-08-22 00:00:00+04:30 90780 12.517240\n",
"4 2020-12-11 00:00:00+03:30 132266 18.328762\n",
"5 2021-04-06 00:00:00+04:30 133163 11.017089\n",
"6 2021-12-09 00:00:00+03:30 80691 10.571072\n",
"7 2022-02-19 00:00:00+03:30 67384 14.681511\n",
"8 2022-09-21 00:00:00+04:30 208446 10.899890\n",
"9 2022-10-12 00:00:00+03:30 278853 12.837482"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame({\n",
" 'date': np.random.choice(pd.date_range('2020-01-01', '2023-01-01'), 10),\n",
" 'A': np.random.randint(50000,300000,size=10),\n",
" 'B': 10 + np.random.rand(10,)*10\n",
"})\n",
"\n",
"df.sort_values(by='date', ignore_index=True, inplace = True)\n",
"\n",
"df['date'] = df['date'].dt.tz_localize('Asia/Tehran')\n",
"\n",
"df.info()\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "R15_gSPaYbRi"
},
"source": [
"Set up helper functions to convert _ints_ and _floats_ to the required number system and convert between calendar systems."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "mK1a3Z7qYbRj"
},
"outputs": [],
"source": [
"def convert_to_number_system(num, langtag, prec=2):\n",
" loc = icu.Locale.forLanguageTag(langtag)\n",
" frmter = icu.LocalizedNumberFormatter(loc).precision(icu.Precision.minMaxFraction(prec,prec))\n",
" if isinstance(num, float):\n",
" return frmter.formatDouble(num)\n",
" return frmter.formatInt(num)\n",
"\n",
"def convert_calendar(date, source_langtag, target_langtag, source_timezone, target_timezone=None):\n",
" # Source calendar\n",
" stz = icu.TimeZone.createTimeZone(source_timezone)\n",
" source_locale = icu.Locale.forLanguageTag(source_langtag)\n",
" source_cal = icu.Calendar.createInstance(stz, source_locale)\n",
" # source_dateformat = icu.DateFormat.createDateInstance(icu.DateFormat.MEDIUM, source_locale)\n",
" # Target calendar\n",
" ttz = icu.TimeZone.createTimeZone(target_timezone) if target_timezone else stz\n",
" target_locale = icu.Locale.forLanguageTag(target_langtag)\n",
" target_cal = icu.Calendar.createInstance(ttz, target_locale)\n",
" target_dateformat = icu.DateFormat.createDateInstance(icu.DateFormat.MEDIUM, target_locale)\n",
" # Convert date to ICU Date object\n",
" internal_date = source_cal.set(date.year, date.month-1, date.day, date.hour, date.minute, date.second)\n",
" return target_dateformat.format(target_cal.setTime(internal_date.getTime()))\n",
"\n",
"fa_langtag = \"fa-IR-u-ca-persian-nu-arabext\"\n",
"\n",
"persian_numbers = partial(convert_to_number_system, langtag=fa_langtag)\n",
"\n",
"to_persian_calendar = partial(convert_calendar,\n",
" source_langtag = 'fa-IR-u-ca-gregory',\n",
" target_langtag = fa_langtag,\n",
" source_timezone = 'Asia/Tehran',\n",
" target_timezone = None\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "M7YpWKh1YbRj"
},
"source": [
"Display localised dataframe:\n",
"\n",
"1. Relabeled columns using Persian labels instead of English column labels\n",
"2. Gregorian dates displayed using Persian (Iranian) Calendar\n",
"3. Localised numbers\n",
"4. Directionality of table cells set to RTL\n",
"5. Adjust font"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "dyvAz7FOYbRj",
"outputId": "dc92900d-5f7c-422e-fbb4-3a594f56a815"
},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\">\n",
"#T_cc69b td {\n",
" direction: rtl;\n",
"}\n",
"#T_cc69b th {\n",
" direction: rtl;\n",
"}\n",
"#T_cc69b_row0_col0, #T_cc69b_row0_col1, #T_cc69b_row0_col2, #T_cc69b_row1_col0, #T_cc69b_row1_col1, #T_cc69b_row1_col2, #T_cc69b_row2_col0, #T_cc69b_row2_col1, #T_cc69b_row2_col2, #T_cc69b_row3_col0, #T_cc69b_row3_col1, #T_cc69b_row3_col2, #T_cc69b_row4_col0, #T_cc69b_row4_col1, #T_cc69b_row4_col2, #T_cc69b_row5_col0, #T_cc69b_row5_col1, #T_cc69b_row5_col2, #T_cc69b_row6_col0, #T_cc69b_row6_col1, #T_cc69b_row6_col2, #T_cc69b_row7_col0, #T_cc69b_row7_col1, #T_cc69b_row7_col2, #T_cc69b_row8_col0, #T_cc69b_row8_col1, #T_cc69b_row8_col2, #T_cc69b_row9_col0, #T_cc69b_row9_col1, #T_cc69b_row9_col2 {\n",
" font-family: Noto Naskh Arabic;\n",
" font-size: 16px;\n",
"}\n",
"</style>\n",
"<table id=\"T_cc69b\">\n",
" <thead>\n",
" <tr>\n",
" <th class=\"blank level0\" >&nbsp;</th>\n",
" <th id=\"T_cc69b_level0_col0\" class=\"col_heading level0 col0\" >تاریخ</th>\n",
" <th id=\"T_cc69b_level0_col1\" class=\"col_heading level0 col1\" >ا</th>\n",
" <th id=\"T_cc69b_level0_col2\" class=\"col_heading level0 col2\" >ب</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th id=\"T_cc69b_level0_row0\" class=\"row_heading level0 row0\" >0</th>\n",
" <td id=\"T_cc69b_row0_col0\" class=\"data row0 col0\" >۷ اسفند ۱۳۹۸</td>\n",
" <td id=\"T_cc69b_row0_col1\" class=\"data row0 col1\" >۱۷۴٬۱۷۳٫۰۰</td>\n",
" <td id=\"T_cc69b_row0_col2\" class=\"data row0 col2\" >۱۲٫۸۵</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_cc69b_level0_row1\" class=\"row_heading level0 row1\" >1</th>\n",
" <td id=\"T_cc69b_row1_col0\" class=\"data row1 col0\" >۱۰ فروردین ۱۳۹۹</td>\n",
" <td id=\"T_cc69b_row1_col1\" class=\"data row1 col1\" >۲۲۸٬۰۴۷٫۰۰</td>\n",
" <td id=\"T_cc69b_row1_col2\" class=\"data row1 col2\" >۱۱٫۸۹</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_cc69b_level0_row2\" class=\"row_heading level0 row2\" >2</th>\n",
" <td id=\"T_cc69b_row2_col0\" class=\"data row2 col0\" >۲۵ فروردین ۱۳۹۹</td>\n",
" <td id=\"T_cc69b_row2_col1\" class=\"data row2 col1\" >۲۹۹٬۱۰۰٫۰۰</td>\n",
" <td id=\"T_cc69b_row2_col2\" class=\"data row2 col2\" >۱۶٫۲۹</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_cc69b_level0_row3\" class=\"row_heading level0 row3\" >3</th>\n",
" <td id=\"T_cc69b_row3_col0\" class=\"data row3 col0\" >۱ شهریور ۱۳۹۹</td>\n",
" <td id=\"T_cc69b_row3_col1\" class=\"data row3 col1\" >۹۰٬۷۸۰٫۰۰</td>\n",
" <td id=\"T_cc69b_row3_col2\" class=\"data row3 col2\" >۱۲٫۵۲</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_cc69b_level0_row4\" class=\"row_heading level0 row4\" >4</th>\n",
" <td id=\"T_cc69b_row4_col0\" class=\"data row4 col0\" >۲۱ آذر ۱۳۹۹</td>\n",
" <td id=\"T_cc69b_row4_col1\" class=\"data row4 col1\" >۱۳۲٬۲۶۶٫۰۰</td>\n",
" <td id=\"T_cc69b_row4_col2\" class=\"data row4 col2\" >۱۸٫۳۳</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_cc69b_level0_row5\" class=\"row_heading level0 row5\" >5</th>\n",
" <td id=\"T_cc69b_row5_col0\" class=\"data row5 col0\" >۱۷ فروردین ۱۴۰۰</td>\n",
" <td id=\"T_cc69b_row5_col1\" class=\"data row5 col1\" >۱۳۳٬۱۶۳٫۰۰</td>\n",
" <td id=\"T_cc69b_row5_col2\" class=\"data row5 col2\" >۱۱٫۰۲</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_cc69b_level0_row6\" class=\"row_heading level0 row6\" >6</th>\n",
" <td id=\"T_cc69b_row6_col0\" class=\"data row6 col0\" >۱۸ آذر ۱۴۰۰</td>\n",
" <td id=\"T_cc69b_row6_col1\" class=\"data row6 col1\" >۸۰٬۶۹۱٫۰۰</td>\n",
" <td id=\"T_cc69b_row6_col2\" class=\"data row6 col2\" >۱۰٫۵۷</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_cc69b_level0_row7\" class=\"row_heading level0 row7\" >7</th>\n",
" <td id=\"T_cc69b_row7_col0\" class=\"data row7 col0\" >۳۰ بهمن ۱۴۰۰</td>\n",
" <td id=\"T_cc69b_row7_col1\" class=\"data row7 col1\" >۶۷٬۳۸۴٫۰۰</td>\n",
" <td id=\"T_cc69b_row7_col2\" class=\"data row7 col2\" >۱۴٫۶۸</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_cc69b_level0_row8\" class=\"row_heading level0 row8\" >8</th>\n",
" <td id=\"T_cc69b_row8_col0\" class=\"data row8 col0\" >۳۰ شهریور ۱۴۰۱</td>\n",
" <td id=\"T_cc69b_row8_col1\" class=\"data row8 col1\" >۲۰۸٬۴۴۶٫۰۰</td>\n",
" <td id=\"T_cc69b_row8_col2\" class=\"data row8 col2\" >۱۰٫۹۰</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_cc69b_level0_row9\" class=\"row_heading level0 row9\" >9</th>\n",
" <td id=\"T_cc69b_row9_col0\" class=\"data row9 col0\" >۲۰ مهر ۱۴۰۱</td>\n",
" <td id=\"T_cc69b_row9_col1\" class=\"data row9 col1\" >۲۷۸٬۸۵۳٫۰۰</td>\n",
" <td id=\"T_cc69b_row9_col2\" class=\"data row9 col2\" >۱۲٫۸۴</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x125d89430>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(df.style.format(\n",
" {\"date\": to_persian_calendar, \"A\": persian_numbers, \"B\": persian_numbers }\n",
").set_table_styles(\n",
" [{\"selector\": \"td\", \"props\": \"direction: rtl;\"},\n",
" {\"selector\": \"th\", \"props\": \"direction: rtl;\"}]\n",
").relabel_index(\n",
" [\"تاریخ\", \"ا\", \"ب\"], axis=1\n",
").set_properties(**{'font-family': 'Noto Naskh Arabic','font-size': '16px'}))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "QLTSbw11YbRk"
},
"source": [
"Set table drectionality to RTL instead:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "J3510hECYbRm",
"outputId": "ab30b275-f537-469d-c6f1-1412a65a4b95"
},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\">\n",
"#T_74d4a_row0_col0, #T_74d4a_row0_col1, #T_74d4a_row0_col2, #T_74d4a_row1_col0, #T_74d4a_row1_col1, #T_74d4a_row1_col2, #T_74d4a_row2_col0, #T_74d4a_row2_col1, #T_74d4a_row2_col2, #T_74d4a_row3_col0, #T_74d4a_row3_col1, #T_74d4a_row3_col2, #T_74d4a_row4_col0, #T_74d4a_row4_col1, #T_74d4a_row4_col2, #T_74d4a_row5_col0, #T_74d4a_row5_col1, #T_74d4a_row5_col2, #T_74d4a_row6_col0, #T_74d4a_row6_col1, #T_74d4a_row6_col2, #T_74d4a_row7_col0, #T_74d4a_row7_col1, #T_74d4a_row7_col2, #T_74d4a_row8_col0, #T_74d4a_row8_col1, #T_74d4a_row8_col2, #T_74d4a_row9_col0, #T_74d4a_row9_col1, #T_74d4a_row9_col2 {\n",
" font-family: Noto Naskh Arabic;\n",
" font-size: 16px;\n",
"}\n",
"</style>\n",
"<table id=\"T_74d4a\" dir=\"rtl\">\n",
" <thead>\n",
" <tr>\n",
" <th class=\"blank level0\" >&nbsp;</th>\n",
" <th id=\"T_74d4a_level0_col0\" class=\"col_heading level0 col0\" >تاریخ</th>\n",
" <th id=\"T_74d4a_level0_col1\" class=\"col_heading level0 col1\" >ا</th>\n",
" <th id=\"T_74d4a_level0_col2\" class=\"col_heading level0 col2\" >ب</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th id=\"T_74d4a_level0_row0\" class=\"row_heading level0 row0\" >0</th>\n",
" <td id=\"T_74d4a_row0_col0\" class=\"data row0 col0\" >۷ اسفند ۱۳۹۸</td>\n",
" <td id=\"T_74d4a_row0_col1\" class=\"data row0 col1\" >۱۷۴٬۱۷۳٫۰۰</td>\n",
" <td id=\"T_74d4a_row0_col2\" class=\"data row0 col2\" >۱۲٫۸۵</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_74d4a_level0_row1\" class=\"row_heading level0 row1\" >1</th>\n",
" <td id=\"T_74d4a_row1_col0\" class=\"data row1 col0\" >۱۰ فروردین ۱۳۹۹</td>\n",
" <td id=\"T_74d4a_row1_col1\" class=\"data row1 col1\" >۲۲۸٬۰۴۷٫۰۰</td>\n",
" <td id=\"T_74d4a_row1_col2\" class=\"data row1 col2\" >۱۱٫۸۹</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_74d4a_level0_row2\" class=\"row_heading level0 row2\" >2</th>\n",
" <td id=\"T_74d4a_row2_col0\" class=\"data row2 col0\" >۲۵ فروردین ۱۳۹۹</td>\n",
" <td id=\"T_74d4a_row2_col1\" class=\"data row2 col1\" >۲۹۹٬۱۰۰٫۰۰</td>\n",
" <td id=\"T_74d4a_row2_col2\" class=\"data row2 col2\" >۱۶٫۲۹</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_74d4a_level0_row3\" class=\"row_heading level0 row3\" >3</th>\n",
" <td id=\"T_74d4a_row3_col0\" class=\"data row3 col0\" >۱ شهریور ۱۳۹۹</td>\n",
" <td id=\"T_74d4a_row3_col1\" class=\"data row3 col1\" >۹۰٬۷۸۰٫۰۰</td>\n",
" <td id=\"T_74d4a_row3_col2\" class=\"data row3 col2\" >۱۲٫۵۲</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_74d4a_level0_row4\" class=\"row_heading level0 row4\" >4</th>\n",
" <td id=\"T_74d4a_row4_col0\" class=\"data row4 col0\" >۲۱ آذر ۱۳۹۹</td>\n",
" <td id=\"T_74d4a_row4_col1\" class=\"data row4 col1\" >۱۳۲٬۲۶۶٫۰۰</td>\n",
" <td id=\"T_74d4a_row4_col2\" class=\"data row4 col2\" >۱۸٫۳۳</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_74d4a_level0_row5\" class=\"row_heading level0 row5\" >5</th>\n",
" <td id=\"T_74d4a_row5_col0\" class=\"data row5 col0\" >۱۷ فروردین ۱۴۰۰</td>\n",
" <td id=\"T_74d4a_row5_col1\" class=\"data row5 col1\" >۱۳۳٬۱۶۳٫۰۰</td>\n",
" <td id=\"T_74d4a_row5_col2\" class=\"data row5 col2\" >۱۱٫۰۲</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_74d4a_level0_row6\" class=\"row_heading level0 row6\" >6</th>\n",
" <td id=\"T_74d4a_row6_col0\" class=\"data row6 col0\" >۱۸ آذر ۱۴۰۰</td>\n",
" <td id=\"T_74d4a_row6_col1\" class=\"data row6 col1\" >۸۰٬۶۹۱٫۰۰</td>\n",
" <td id=\"T_74d4a_row6_col2\" class=\"data row6 col2\" >۱۰٫۵۷</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_74d4a_level0_row7\" class=\"row_heading level0 row7\" >7</th>\n",
" <td id=\"T_74d4a_row7_col0\" class=\"data row7 col0\" >۳۰ بهمن ۱۴۰۰</td>\n",
" <td id=\"T_74d4a_row7_col1\" class=\"data row7 col1\" >۶۷٬۳۸۴٫۰۰</td>\n",
" <td id=\"T_74d4a_row7_col2\" class=\"data row7 col2\" >۱۴٫۶۸</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_74d4a_level0_row8\" class=\"row_heading level0 row8\" >8</th>\n",
" <td id=\"T_74d4a_row8_col0\" class=\"data row8 col0\" >۳۰ شهریور ۱۴۰۱</td>\n",
" <td id=\"T_74d4a_row8_col1\" class=\"data row8 col1\" >۲۰۸٬۴۴۶٫۰۰</td>\n",
" <td id=\"T_74d4a_row8_col2\" class=\"data row8 col2\" >۱۰٫۹۰</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_74d4a_level0_row9\" class=\"row_heading level0 row9\" >9</th>\n",
" <td id=\"T_74d4a_row9_col0\" class=\"data row9 col0\" >۲۰ مهر ۱۴۰۱</td>\n",
" <td id=\"T_74d4a_row9_col1\" class=\"data row9 col1\" >۲۷۸٬۸۵۳٫۰۰</td>\n",
" <td id=\"T_74d4a_row9_col2\" class=\"data row9 col2\" >۱۲٫۸۴</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x125d89430>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(df.style.set_table_attributes('dir=\"rtl\"').format(\n",
" {\"date\": to_persian_calendar, \"A\": persian_numbers, \"B\": persian_numbers }\n",
").relabel_index(\n",
" [\"تاریخ\", \"ا\", \"ب\"], axis=1\n",
").set_properties(**{'font-family': 'Noto Naskh Arabic','font-size': '16px'}))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.12.0"
},
"colab": {
"provenance": [],
"include_colab_link": true
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment