Skip to content

Instantly share code, notes, and snippets.

@titaneric
Last active December 15, 2019 09:14
Show Gist options
  • Save titaneric/9624a00fc38adacac5a64f62cba1135d to your computer and use it in GitHub Desktop.
Save titaneric/9624a00fc38adacac5a64f62cba1135d to your computer and use it in GitHub Desktop.
MultiIndex problem for @ck0201
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"url = \"https://zh.wikipedia.org/wiki/2020%E5%B9%B4%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B%E7%B8%BD%E7%B5%B1%E9%81%B8%E8%88%89%E6%B0%91%E6%84%8F%E8%AA%BF%E6%9F%A5\""
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"table = pd.read_html(url)[0]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"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 tr th {\n",
" text-align: left;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"6\" halign=\"left\">2020年中華民國總統選舉民意調查(英德配-國政配-瑜湘配)</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"6\" halign=\"left\">2019年全國</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th>委託調查單位</th>\n",
" <th>調查時間</th>\n",
" <th>有效樣本</th>\n",
" <th>民進蔡英文民進賴清德</th>\n",
" <th>國民韓國瑜無黨張善政</th>\n",
" <th>親民宋楚瑜無黨余 湘</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>自由時報</td>\n",
" <td>12-09-12-11</td>\n",
" <td>1078</td>\n",
" <td>53.12%</td>\n",
" <td>15.47%</td>\n",
" <td>4.66%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>綠黨</td>\n",
" <td>12-09-12-10</td>\n",
" <td>1025</td>\n",
" <td>48.9%</td>\n",
" <td>19.7%</td>\n",
" <td>8.3%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>ETtoday新聞雲</td>\n",
" <td>12-04-12-08</td>\n",
" <td>2815</td>\n",
" <td>46.6%</td>\n",
" <td>24.5%</td>\n",
" <td>7.2%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>蘋果新聞網</td>\n",
" <td>12-02-12-08</td>\n",
" <td>1068</td>\n",
" <td>50.8%</td>\n",
" <td>15.2%</td>\n",
" <td>6.5%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>新台灣國策智庫</td>\n",
" <td>12-05-12-07</td>\n",
" <td>1068</td>\n",
" <td>50.3%</td>\n",
" <td>17.6%</td>\n",
" <td>9.6%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>聯合報系</td>\n",
" <td>12-05-12-07</td>\n",
" <td>1157</td>\n",
" <td>48%</td>\n",
" <td>20%</td>\n",
" <td>9%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>美麗島電子報</td>\n",
" <td>12-05-12-06</td>\n",
" <td>1073</td>\n",
" <td>51.8%</td>\n",
" <td>16.1%</td>\n",
" <td>7.5%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>TVBS</td>\n",
" <td>12-02-12-04</td>\n",
" <td>1120</td>\n",
" <td>51%</td>\n",
" <td>29%</td>\n",
" <td>7%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>寶島通訊</td>\n",
" <td>12-02-12-04</td>\n",
" <td>1727</td>\n",
" <td>58.55%</td>\n",
" <td>29.90%</td>\n",
" <td>7.98%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>綠黨</td>\n",
" <td>12-02-12-03</td>\n",
" <td>1021</td>\n",
" <td>52.1%</td>\n",
" <td>17.9%</td>\n",
" <td>9.5%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>蘋果新聞網</td>\n",
" <td>11-29-12-01</td>\n",
" <td>1074</td>\n",
" <td>51.0%</td>\n",
" <td>19.0%</td>\n",
" <td>6.6%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>TVBS</td>\n",
" <td>11-27-11-29</td>\n",
" <td>1045</td>\n",
" <td>46%</td>\n",
" <td>31%</td>\n",
" <td>8%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>台灣制憲基金會</td>\n",
" <td>11-27-11-28</td>\n",
" <td>1079</td>\n",
" <td>50.6%</td>\n",
" <td>22.8%</td>\n",
" <td>9.6%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>放言</td>\n",
" <td>11-27-11-28</td>\n",
" <td>1080</td>\n",
" <td>44.5%</td>\n",
" <td>23.0%</td>\n",
" <td>7.7%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>自由時報</td>\n",
" <td>11-25-11-27</td>\n",
" <td>1070</td>\n",
" <td>49.95%</td>\n",
" <td>19.49%</td>\n",
" <td>5.62%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>綠黨</td>\n",
" <td>11-26-11-26</td>\n",
" <td>1010</td>\n",
" <td>48.2%</td>\n",
" <td>27.1%</td>\n",
" <td>8.6%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>美麗島電子報</td>\n",
" <td>11-25-11-26</td>\n",
" <td>1071</td>\n",
" <td>51.2%</td>\n",
" <td>23.7%</td>\n",
" <td>5.2%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>品觀點</td>\n",
" <td>11-25-11-26</td>\n",
" <td>2192</td>\n",
" <td>40.9%</td>\n",
" <td>23.6%</td>\n",
" <td>6.5%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>震撼世代傳媒</td>\n",
" <td>11-24-11-25</td>\n",
" <td>1073</td>\n",
" <td>48.5%</td>\n",
" <td>25.6%</td>\n",
" <td>9.1%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>ETtoday新聞雲</td>\n",
" <td>11-21-11-25</td>\n",
" <td>2308</td>\n",
" <td>44.4%</td>\n",
" <td>30.3%</td>\n",
" <td>9.5%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>兩岸政策協會</td>\n",
" <td>11-23-11-24</td>\n",
" <td>1069</td>\n",
" <td>50.0%</td>\n",
" <td>28.3%</td>\n",
" <td>7.8%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>蘋果新聞網</td>\n",
" <td>11-22-11-24</td>\n",
" <td>1069</td>\n",
" <td>42.2%</td>\n",
" <td>22.7%</td>\n",
" <td>6.7%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>台灣獨立建國聯盟</td>\n",
" <td>11-20-11-21</td>\n",
" <td>1101</td>\n",
" <td>41.4%</td>\n",
" <td>26.4%</td>\n",
" <td>9.7%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>綠黨</td>\n",
" <td>11-19-11-20</td>\n",
" <td>1048</td>\n",
" <td>44.9%</td>\n",
" <td>25.4%</td>\n",
" <td>8.9%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>寶島通訊</td>\n",
" <td>11-18-11-20</td>\n",
" <td>1778</td>\n",
" <td>52.93%</td>\n",
" <td>34.48%</td>\n",
" <td>10.41%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>台灣民意基金會</td>\n",
" <td>11-18-11-19</td>\n",
" <td>1078</td>\n",
" <td>55.2%</td>\n",
" <td>26.3%</td>\n",
" <td>7.6%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>品觀點</td>\n",
" <td>11-18-11-19</td>\n",
" <td>2157</td>\n",
" <td>41.6%</td>\n",
" <td>25.0%</td>\n",
" <td>6.9%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>蘋果新聞網</td>\n",
" <td>11-15-11-17</td>\n",
" <td>1084</td>\n",
" <td>42.3%</td>\n",
" <td>24.0%</td>\n",
" <td>6.0%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>聯合報系</td>\n",
" <td>11-14-11-16</td>\n",
" <td>1150</td>\n",
" <td>45%</td>\n",
" <td>29%</td>\n",
" <td>8%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>TVBS</td>\n",
" <td>11-13-11-15</td>\n",
" <td>1209</td>\n",
" <td>45%</td>\n",
" <td>37%</td>\n",
" <td>8%</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 2020年中華民國總統選舉民意調查(英德配-國政配-瑜湘配) \\\n",
" 2019年全國 \n",
" 委託調查單位 調查時間 有效樣本 民進蔡英文民進賴清德 國民韓國瑜無黨張善政 \n",
"0 自由時報 12-09-12-11 1078 53.12% 15.47% \n",
"1 綠黨 12-09-12-10 1025 48.9% 19.7% \n",
"2 ETtoday新聞雲 12-04-12-08 2815 46.6% 24.5% \n",
"3 蘋果新聞網 12-02-12-08 1068 50.8% 15.2% \n",
"4 新台灣國策智庫 12-05-12-07 1068 50.3% 17.6% \n",
"5 聯合報系 12-05-12-07 1157 48% 20% \n",
"6 美麗島電子報 12-05-12-06 1073 51.8% 16.1% \n",
"7 TVBS 12-02-12-04 1120 51% 29% \n",
"8 寶島通訊 12-02-12-04 1727 58.55% 29.90% \n",
"9 綠黨 12-02-12-03 1021 52.1% 17.9% \n",
"10 蘋果新聞網 11-29-12-01 1074 51.0% 19.0% \n",
"11 TVBS 11-27-11-29 1045 46% 31% \n",
"12 台灣制憲基金會 11-27-11-28 1079 50.6% 22.8% \n",
"13 放言 11-27-11-28 1080 44.5% 23.0% \n",
"14 自由時報 11-25-11-27 1070 49.95% 19.49% \n",
"15 綠黨 11-26-11-26 1010 48.2% 27.1% \n",
"16 美麗島電子報 11-25-11-26 1071 51.2% 23.7% \n",
"17 品觀點 11-25-11-26 2192 40.9% 23.6% \n",
"18 震撼世代傳媒 11-24-11-25 1073 48.5% 25.6% \n",
"19 ETtoday新聞雲 11-21-11-25 2308 44.4% 30.3% \n",
"20 兩岸政策協會 11-23-11-24 1069 50.0% 28.3% \n",
"21 蘋果新聞網 11-22-11-24 1069 42.2% 22.7% \n",
"22 台灣獨立建國聯盟 11-20-11-21 1101 41.4% 26.4% \n",
"23 綠黨 11-19-11-20 1048 44.9% 25.4% \n",
"24 寶島通訊 11-18-11-20 1778 52.93% 34.48% \n",
"25 台灣民意基金會 11-18-11-19 1078 55.2% 26.3% \n",
"26 品觀點 11-18-11-19 2157 41.6% 25.0% \n",
"27 蘋果新聞網 11-15-11-17 1084 42.3% 24.0% \n",
"28 聯合報系 11-14-11-16 1150 45% 29% \n",
"29 TVBS 11-13-11-15 1209 45% 37% \n",
"\n",
" \n",
" \n",
" 親民宋楚瑜無黨余 湘 \n",
"0 4.66% \n",
"1 8.3% \n",
"2 7.2% \n",
"3 6.5% \n",
"4 9.6% \n",
"5 9% \n",
"6 7.5% \n",
"7 7% \n",
"8 7.98% \n",
"9 9.5% \n",
"10 6.6% \n",
"11 8% \n",
"12 9.6% \n",
"13 7.7% \n",
"14 5.62% \n",
"15 8.6% \n",
"16 5.2% \n",
"17 6.5% \n",
"18 9.1% \n",
"19 9.5% \n",
"20 7.8% \n",
"21 6.7% \n",
"22 9.7% \n",
"23 8.9% \n",
"24 10.41% \n",
"25 7.6% \n",
"26 6.9% \n",
"27 6.0% \n",
"28 8% \n",
"29 8% "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"table"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"30"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(table)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"MultiIndex([('2020年中華民國總統選舉民意調查(英德配-國政配-瑜湘配)', '2019年全國', '委託調查單位'),\n",
" ('2020年中華民國總統選舉民意調查(英德配-國政配-瑜湘配)', '2019年全國', '調查時間'),\n",
" ('2020年中華民國總統選舉民意調查(英德配-國政配-瑜湘配)', '2019年全國', '有效樣本'),\n",
" ('2020年中華民國總統選舉民意調查(英德配-國政配-瑜湘配)', '2019年全國', '民進蔡英文民進賴清德'),\n",
" ('2020年中華民國總統選舉民意調查(英德配-國政配-瑜湘配)', '2019年全國', '國民韓國瑜無黨張善政'),\n",
" ('2020年中華民國總統選舉民意調查(英德配-國政配-瑜湘配)', '2019年全國', '親民宋楚瑜無黨余 湘')],\n",
" )"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"table.columns"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['委託調查單位', '調查時間', '有效樣本', '民進蔡英文民進賴清德', '國民韓國瑜無黨張善政', '親民宋楚瑜無黨余 湘'], dtype='object')"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"table.columns.get_level_values(2)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"table.columns = table.columns.get_level_values(2)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"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>委託調查單位</th>\n",
" <th>調查時間</th>\n",
" <th>有效樣本</th>\n",
" <th>民進蔡英文民進賴清德</th>\n",
" <th>國民韓國瑜無黨張善政</th>\n",
" <th>親民宋楚瑜無黨余 湘</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>自由時報</td>\n",
" <td>12-09-12-11</td>\n",
" <td>1078</td>\n",
" <td>53.12%</td>\n",
" <td>15.47%</td>\n",
" <td>4.66%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>綠黨</td>\n",
" <td>12-09-12-10</td>\n",
" <td>1025</td>\n",
" <td>48.9%</td>\n",
" <td>19.7%</td>\n",
" <td>8.3%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>ETtoday新聞雲</td>\n",
" <td>12-04-12-08</td>\n",
" <td>2815</td>\n",
" <td>46.6%</td>\n",
" <td>24.5%</td>\n",
" <td>7.2%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>蘋果新聞網</td>\n",
" <td>12-02-12-08</td>\n",
" <td>1068</td>\n",
" <td>50.8%</td>\n",
" <td>15.2%</td>\n",
" <td>6.5%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>新台灣國策智庫</td>\n",
" <td>12-05-12-07</td>\n",
" <td>1068</td>\n",
" <td>50.3%</td>\n",
" <td>17.6%</td>\n",
" <td>9.6%</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 委託調查單位 調查時間 有效樣本 民進蔡英文民進賴清德 國民韓國瑜無黨張善政 親民宋楚瑜無黨余 湘\n",
"0 自由時報 12-09-12-11 1078 53.12% 15.47% 4.66%\n",
"1 綠黨 12-09-12-10 1025 48.9% 19.7% 8.3%\n",
"2 ETtoday新聞雲 12-04-12-08 2815 46.6% 24.5% 7.2%\n",
"3 蘋果新聞網 12-02-12-08 1068 50.8% 15.2% 6.5%\n",
"4 新台灣國策智庫 12-05-12-07 1068 50.3% 17.6% 9.6%"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"table.head()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['委託調查單位', '調查時間', '有效樣本', '民進蔡英文民進賴清德', '國民韓國瑜無黨張善政', '親民宋楚瑜無黨余 湘'], dtype='object')"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"table.columns"
]
}
],
"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.7.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment