{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Пример разбиения заголовка датафрейма и его печати"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"создаём простой датафрейм, с заголовками как в примере с ОКТМО"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"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>guid</th>\n",
" <th>startdate</th>\n",
" <th>enddate</th>\n",
" <th>status</th>\n",
" <th>regioncode</th>\n",
" <th>areacode</th>\n",
" <th>citycode</th>\n",
" <th>localcode</th>\n",
" <th>controlnum</th>\n",
" <th>code</th>\n",
" <th>name</th>\n",
" <th>centrename</th>\n",
" <th>clarification</th>\n",
" <th>lastchangetype</th>\n",
" <th>changedate</th>\n",
" <th>introductiondate</th>\n",
" <th>section</th>\n",
" <th>lastChangeNum</th>\n",
" <th>filedate</th>\n",
" <th>loaddate</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [guid, startdate, enddate, status, regioncode, areacode, citycode, localcode, controlnum, code, name, centrename, clarification, lastchangetype, changedate, introductiondate, section, lastChangeNum, filedate, loaddate]\n",
"Index: []"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame(\n",
" {'guid': [], 'startdate': [], 'enddate': [], 'status': [], 'regioncode': [], 'areacode': [], 'citycode': [],\n",
" 'localcode': [], 'controlnum': [], 'code': [], 'name': [], 'centrename': [], 'clarification': [],\n",
" 'lastchangetype': [], 'changedate': [], 'introductiondate': [], 'section': [], 'lastChangeNum': [], 'filedate': [], 'loaddate': []\n",
" }\n",
")\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def print_df_cols(df, print_cols=2, tab_size=0):\n",
" '''\n",
" функция поколоночной печати заголовка dataframe\n",
" df - входной datafram\n",
" print_cols - во сколько колонок уложить печать\n",
" tab_size - задавать дополнительные отступы между колонками\n",
" '''\n",
" dfl = df.columns.size\n",
" full_col_list = list(df.columns) + [''] * (dfl * 2 % print_cols)\n",
" n = np.hstack(np.vsplit(np.array([np.arange(len(full_col_list)), full_col_list]).T, print_cols))\n",
" col_maxlen = [max(len(s) for s in n[:,i]) for i in range(1, print_cols * 2, 2)]\n",
" format_string = ' '.join('{:>3} {:%s}' % (m + tab_size) if m else '' for m in col_maxlen)\n",
" for col in n:\n",
" print(format_string.format(*col))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"напечатаем заголовки в 3 колонки"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 0 guid 7 localcode 14 changedate \n",
" 1 startdate 8 controlnum 15 introductiondate\n",
" 2 enddate 9 code 16 section \n",
" 3 status 10 name 17 lastChangeNum \n",
" 4 regioncode 11 centrename 18 filedate \n",
" 5 areacode 12 clarification 19 loaddate \n",
" 6 citycode 13 lastchangetype 20 \n"
]
}
],
"source": [
"print_df_cols(df, 3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"а теперь с отступами"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 0 guid 7 localcode 14 changedate \n",
" 1 startdate 8 controlnum 15 introductiondate \n",
" 2 enddate 9 code 16 section \n",
" 3 status 10 name 17 lastChangeNum \n",
" 4 regioncode 11 centrename 18 filedate \n",
" 5 areacode 12 clarification 19 loaddate \n",
" 6 citycode 13 lastchangetype 20 \n"
]
}
],
"source": [
"print_df_cols(df, 3, 10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ну и в 2 колонки"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 0 guid 10 name \n",
" 1 startdate 11 centrename \n",
" 2 enddate 12 clarification \n",
" 3 status 13 lastchangetype \n",
" 4 regioncode 14 changedate \n",
" 5 areacode 15 introductiondate \n",
" 6 citycode 16 section \n",
" 7 localcode 17 lastChangeNum \n",
" 8 controlnum 18 filedate \n",
" 9 code 19 loaddate \n"
]
}
],
"source": [
"print_df_cols(df, 2, 10)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([], dtype=int32)"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.arange(2, 2)"
]
}
],
"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.8.2"
}
},
"nbformat": 4,
"nbformat_minor": 4
}