{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス | \n",
" 数学 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 1 | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 2 | \n",
"
\n",
" \n",
" 2 | \n",
" 鈴木 | \n",
" a001 | \n",
" 3 | \n",
"
\n",
" \n",
" 3 | \n",
" 佐藤 | \n",
" a001 | \n",
" 4 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス 数学\n",
"0 高橋 a001 1\n",
"1 伊藤 a001 2\n",
"2 鈴木 a001 3\n",
"3 佐藤 a001 4"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df01 = pd.DataFrame( {'氏名':['高橋', '伊藤', '鈴木', '佐藤'], \n",
" 'クラス':['a001', 'a001', 'a001', 'a001'],\n",
" '数学':[1, 2, 3, 4]})\n",
"df01"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス | \n",
" 国語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 5 | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 6 | \n",
"
\n",
" \n",
" 2 | \n",
" 鈴木 | \n",
" a001 | \n",
" 7 | \n",
"
\n",
" \n",
" 3 | \n",
" 佐藤 | \n",
" a001 | \n",
" 8 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス 国語\n",
"0 高橋 a001 5\n",
"1 伊藤 a001 6\n",
"2 鈴木 a001 7\n",
"3 佐藤 a001 8"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df02 = pd.DataFrame( {'氏名':['高橋', '伊藤', '鈴木', '佐藤'], \n",
" 'クラス':['a001', 'a001', 'a001', 'a001'],\n",
" '国語':[5, 6, 7, 8]})\n",
"df02"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス_x | \n",
" 数学 | \n",
" クラス_y | \n",
" 国語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 1 | \n",
" a001 | \n",
" 5 | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 2 | \n",
" a001 | \n",
" 6 | \n",
"
\n",
" \n",
" 2 | \n",
" 鈴木 | \n",
" a001 | \n",
" 3 | \n",
" a001 | \n",
" 7 | \n",
"
\n",
" \n",
" 3 | \n",
" 佐藤 | \n",
" a001 | \n",
" 4 | \n",
" a001 | \n",
" 8 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス_x 数学 クラス_y 国語\n",
"0 高橋 a001 1 a001 5\n",
"1 伊藤 a001 2 a001 6\n",
"2 鈴木 a001 3 a001 7\n",
"3 佐藤 a001 4 a001 8"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.merge(df01 ,df02, on='氏名')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス_left | \n",
" 数学 | \n",
" クラス_right | \n",
" 国語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 1 | \n",
" a001 | \n",
" 5 | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 2 | \n",
" a001 | \n",
" 6 | \n",
"
\n",
" \n",
" 2 | \n",
" 鈴木 | \n",
" a001 | \n",
" 3 | \n",
" a001 | \n",
" 7 | \n",
"
\n",
" \n",
" 3 | \n",
" 佐藤 | \n",
" a001 | \n",
" 4 | \n",
" a001 | \n",
" 8 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス_left 数学 クラス_right 国語\n",
"0 高橋 a001 1 a001 5\n",
"1 伊藤 a001 2 a001 6\n",
"2 鈴木 a001 3 a001 7\n",
"3 佐藤 a001 4 a001 8"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.merge(df01 ,df02, on='氏名', suffixes=['_left', '_right'])"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス | \n",
" 数学 | \n",
" クラス_重複 | \n",
" 国語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 1 | \n",
" a001 | \n",
" 5 | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 2 | \n",
" a001 | \n",
" 6 | \n",
"
\n",
" \n",
" 2 | \n",
" 鈴木 | \n",
" a001 | \n",
" 3 | \n",
" a001 | \n",
" 7 | \n",
"
\n",
" \n",
" 3 | \n",
" 佐藤 | \n",
" a001 | \n",
" 4 | \n",
" a001 | \n",
" 8 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス 数学 クラス_重複 国語\n",
"0 高橋 a001 1 a001 5\n",
"1 伊藤 a001 2 a001 6\n",
"2 鈴木 a001 3 a001 7\n",
"3 佐藤 a001 4 a001 8"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.merge(df01 ,df02, on='氏名', suffixes=['', '_重複'])"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 名前 | \n",
" クラス | \n",
" 国語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 5 | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 6 | \n",
"
\n",
" \n",
" 2 | \n",
" 鈴木 | \n",
" a001 | \n",
" 7 | \n",
"
\n",
" \n",
" 3 | \n",
" 佐藤 | \n",
" a001 | \n",
" 8 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 名前 クラス 国語\n",
"0 高橋 a001 5\n",
"1 伊藤 a001 6\n",
"2 鈴木 a001 7\n",
"3 佐藤 a001 8"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df02_name = pd.DataFrame( {'名前':['高橋', '伊藤', '鈴木', '佐藤'], \n",
" 'クラス':['a001', 'a001', 'a001', 'a001'],\n",
" '国語':[5, 6, 7, 8]})\n",
"df02_name"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス_x | \n",
" 数学 | \n",
" 名前 | \n",
" クラス_y | \n",
" 国語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 1 | \n",
" 高橋 | \n",
" a001 | \n",
" 5 | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 2 | \n",
" 伊藤 | \n",
" a001 | \n",
" 6 | \n",
"
\n",
" \n",
" 2 | \n",
" 鈴木 | \n",
" a001 | \n",
" 3 | \n",
" 鈴木 | \n",
" a001 | \n",
" 7 | \n",
"
\n",
" \n",
" 3 | \n",
" 佐藤 | \n",
" a001 | \n",
" 4 | \n",
" 佐藤 | \n",
" a001 | \n",
" 8 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス_x 数学 名前 クラス_y 国語\n",
"0 高橋 a001 1 高橋 a001 5\n",
"1 伊藤 a001 2 伊藤 a001 6\n",
"2 鈴木 a001 3 鈴木 a001 7\n",
"3 佐藤 a001 4 佐藤 a001 8"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.merge(df01 ,df02_name, left_on='氏名',right_on='名前')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 名前 | \n",
" クラス | \n",
" 英語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 15 | \n",
"
\n",
" \n",
" 1 | \n",
" 高橋 | \n",
" a002 | \n",
" 16 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 名前 クラス 英語\n",
"0 高橋 a001 15\n",
"1 高橋 a002 16"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df03 = pd.DataFrame( {'名前':['高橋', '高橋'],\n",
" 'クラス':['a001','a002'],\n",
" '英語':[15, 16]})\n",
"df03"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス | \n",
" 数学 | \n",
" 名前 | \n",
" 英語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 1 | \n",
" 高橋 | \n",
" 15 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス 数学 名前 英語\n",
"0 高橋 a001 1 高橋 15"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.merge(df01 ,df03, left_on=['氏名','クラス'],right_on=['名前','クラス'])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 結合方法"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス | \n",
" 数学 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 1 | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 2 | \n",
"
\n",
" \n",
" 2 | \n",
" 鈴木 | \n",
" a001 | \n",
" 3 | \n",
"
\n",
" \n",
" 3 | \n",
" 佐藤 | \n",
" a001 | \n",
" 4 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス 数学\n",
"0 高橋 a001 1\n",
"1 伊藤 a001 2\n",
"2 鈴木 a001 3\n",
"3 佐藤 a001 4"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df01"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス | \n",
" 国語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 5 | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 6 | \n",
"
\n",
" \n",
" 2 | \n",
" 渡辺 | \n",
" a001 | \n",
" 7 | \n",
"
\n",
" \n",
" 3 | \n",
" 加藤 | \n",
" a001 | \n",
" 8 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス 国語\n",
"0 高橋 a001 5\n",
"1 伊藤 a001 6\n",
"2 渡辺 a001 7\n",
"3 加藤 a001 8"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df04 = pd.DataFrame( {'氏名':['高橋', '伊藤', '渡辺', '加藤'], \n",
" 'クラス':['a001', 'a001', 'a001', 'a001'],\n",
" '国語':[5, 6, 7, 8]})\n",
"df04"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス_x | \n",
" 数学 | \n",
" クラス_y | \n",
" 国語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 1 | \n",
" a001 | \n",
" 5.0 | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 2 | \n",
" a001 | \n",
" 6.0 | \n",
"
\n",
" \n",
" 2 | \n",
" 鈴木 | \n",
" a001 | \n",
" 3 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 3 | \n",
" 佐藤 | \n",
" a001 | \n",
" 4 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス_x 数学 クラス_y 国語\n",
"0 高橋 a001 1 a001 5.0\n",
"1 伊藤 a001 2 a001 6.0\n",
"2 鈴木 a001 3 NaN NaN\n",
"3 佐藤 a001 4 NaN NaN"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.merge(df01 ,df04, on='氏名',how='left')"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス_x | \n",
" 数学 | \n",
" クラス_y | \n",
" 国語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 1.0 | \n",
" a001 | \n",
" 5 | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 2.0 | \n",
" a001 | \n",
" 6 | \n",
"
\n",
" \n",
" 2 | \n",
" 渡辺 | \n",
" NaN | \n",
" NaN | \n",
" a001 | \n",
" 7 | \n",
"
\n",
" \n",
" 3 | \n",
" 加藤 | \n",
" NaN | \n",
" NaN | \n",
" a001 | \n",
" 8 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス_x 数学 クラス_y 国語\n",
"0 高橋 a001 1.0 a001 5\n",
"1 伊藤 a001 2.0 a001 6\n",
"2 渡辺 NaN NaN a001 7\n",
"3 加藤 NaN NaN a001 8"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.merge(df01 ,df04, on='氏名',how='right')"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス_x | \n",
" 数学 | \n",
" クラス_y | \n",
" 国語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 1.0 | \n",
" a001 | \n",
" 5.0 | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 2.0 | \n",
" a001 | \n",
" 6.0 | \n",
"
\n",
" \n",
" 2 | \n",
" 鈴木 | \n",
" a001 | \n",
" 3.0 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 3 | \n",
" 佐藤 | \n",
" a001 | \n",
" 4.0 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 4 | \n",
" 渡辺 | \n",
" NaN | \n",
" NaN | \n",
" a001 | \n",
" 7.0 | \n",
"
\n",
" \n",
" 5 | \n",
" 加藤 | \n",
" NaN | \n",
" NaN | \n",
" a001 | \n",
" 8.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス_x 数学 クラス_y 国語\n",
"0 高橋 a001 1.0 a001 5.0\n",
"1 伊藤 a001 2.0 a001 6.0\n",
"2 鈴木 a001 3.0 NaN NaN\n",
"3 佐藤 a001 4.0 NaN NaN\n",
"4 渡辺 NaN NaN a001 7.0\n",
"5 加藤 NaN NaN a001 8.0"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.merge(df01 ,df04, on='氏名',how='outer')"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス_x | \n",
" 数学 | \n",
" クラス_y | \n",
" 国語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 1 | \n",
" a001 | \n",
" 5 | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 2 | \n",
" a001 | \n",
" 6 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス_x 数学 クラス_y 国語\n",
"0 高橋 a001 1 a001 5\n",
"1 伊藤 a001 2 a001 6"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.merge(df01 ,df04, on='氏名',how='inner')"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス_x | \n",
" 数学 | \n",
" クラス_y | \n",
" 国語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 1 | \n",
" a001 | \n",
" 5 | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 2 | \n",
" a001 | \n",
" 6 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス_x 数学 クラス_y 国語\n",
"0 高橋 a001 1 a001 5\n",
"1 伊藤 a001 2 a001 6"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.merge(df01 ,df04, on='氏名')"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス_x | \n",
" 数学 | \n",
" クラス_y | \n",
" 国語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 1.0 | \n",
" a001 | \n",
" 5.0 | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 2.0 | \n",
" a001 | \n",
" 6.0 | \n",
"
\n",
" \n",
" 2 | \n",
" 鈴木 | \n",
" a001 | \n",
" 3.0 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 3 | \n",
" 佐藤 | \n",
" a001 | \n",
" 4.0 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 4 | \n",
" 渡辺 | \n",
" NaN | \n",
" NaN | \n",
" a001 | \n",
" 7.0 | \n",
"
\n",
" \n",
" 5 | \n",
" 加藤 | \n",
" NaN | \n",
" NaN | \n",
" a001 | \n",
" 8.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス_x 数学 クラス_y 国語\n",
"0 高橋 a001 1.0 a001 5.0\n",
"1 伊藤 a001 2.0 a001 6.0\n",
"2 鈴木 a001 3.0 NaN NaN\n",
"3 佐藤 a001 4.0 NaN NaN\n",
"4 渡辺 NaN NaN a001 7.0\n",
"5 加藤 NaN NaN a001 8.0"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.merge(df01 ,df04, on='氏名',how='outer')"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス_x | \n",
" 数学 | \n",
" クラス_y | \n",
" 国語 | \n",
" _merge | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 1.0 | \n",
" a001 | \n",
" 5.0 | \n",
" both | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 2.0 | \n",
" a001 | \n",
" 6.0 | \n",
" both | \n",
"
\n",
" \n",
" 2 | \n",
" 鈴木 | \n",
" a001 | \n",
" 3.0 | \n",
" NaN | \n",
" NaN | \n",
" left_only | \n",
"
\n",
" \n",
" 3 | \n",
" 佐藤 | \n",
" a001 | \n",
" 4.0 | \n",
" NaN | \n",
" NaN | \n",
" left_only | \n",
"
\n",
" \n",
" 4 | \n",
" 渡辺 | \n",
" NaN | \n",
" NaN | \n",
" a001 | \n",
" 7.0 | \n",
" right_only | \n",
"
\n",
" \n",
" 5 | \n",
" 加藤 | \n",
" NaN | \n",
" NaN | \n",
" a001 | \n",
" 8.0 | \n",
" right_only | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス_x 数学 クラス_y 国語 _merge\n",
"0 高橋 a001 1.0 a001 5.0 both\n",
"1 伊藤 a001 2.0 a001 6.0 both\n",
"2 鈴木 a001 3.0 NaN NaN left_only\n",
"3 佐藤 a001 4.0 NaN NaN left_only\n",
"4 渡辺 NaN NaN a001 7.0 right_only\n",
"5 加藤 NaN NaN a001 8.0 right_only"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.merge(df01 ,df04, on='氏名',how='outer', indicator=True)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" クラス | \n",
" 数学 | \n",
"
\n",
" \n",
" \n",
" \n",
" 高橋 | \n",
" a001 | \n",
" 1 | \n",
"
\n",
" \n",
" 伊藤 | \n",
" a001 | \n",
" 2 | \n",
"
\n",
" \n",
" 鈴木 | \n",
" a001 | \n",
" 3 | \n",
"
\n",
" \n",
" 佐藤 | \n",
" a001 | \n",
" 4 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" クラス 数学\n",
"高橋 a001 1\n",
"伊藤 a001 2\n",
"鈴木 a001 3\n",
"佐藤 a001 4"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df05 = pd.DataFrame({'クラス':['a001', 'a001', 'a001', 'a001'],\n",
" '数学':[1, 2, 3, 4]}\n",
" ,index = ['高橋', '伊藤', '鈴木', '佐藤'])\n",
"df05"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 氏名 | \n",
" クラス | \n",
" 国語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 高橋 | \n",
" a001 | \n",
" 5 | \n",
"
\n",
" \n",
" 1 | \n",
" 伊藤 | \n",
" a001 | \n",
" 6 | \n",
"
\n",
" \n",
" 2 | \n",
" 鈴木 | \n",
" a001 | \n",
" 7 | \n",
"
\n",
" \n",
" 3 | \n",
" 佐藤 | \n",
" a001 | \n",
" 8 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 氏名 クラス 国語\n",
"0 高橋 a001 5\n",
"1 伊藤 a001 6\n",
"2 鈴木 a001 7\n",
"3 佐藤 a001 8"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df02"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" クラス_x | \n",
" 数学 | \n",
" 氏名 | \n",
" クラス_y | \n",
" 国語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" a001 | \n",
" 1 | \n",
" 高橋 | \n",
" a001 | \n",
" 5 | \n",
"
\n",
" \n",
" 1 | \n",
" a001 | \n",
" 2 | \n",
" 伊藤 | \n",
" a001 | \n",
" 6 | \n",
"
\n",
" \n",
" 2 | \n",
" a001 | \n",
" 3 | \n",
" 鈴木 | \n",
" a001 | \n",
" 7 | \n",
"
\n",
" \n",
" 3 | \n",
" a001 | \n",
" 4 | \n",
" 佐藤 | \n",
" a001 | \n",
" 8 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" クラス_x 数学 氏名 クラス_y 国語\n",
"0 a001 1 高橋 a001 5\n",
"1 a001 2 伊藤 a001 6\n",
"2 a001 3 鈴木 a001 7\n",
"3 a001 4 佐藤 a001 8"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.merge(df01 ,df02,left_index=True,right_on='氏名')"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" クラス_x | \n",
" 数学 | \n",
" 氏名 | \n",
" クラス_y | \n",
" 国語 | \n",
"
\n",
" \n",
" \n",
" \n",
" 1 | \n",
" a001 | \n",
" 2 | \n",
" 伊藤 | \n",
" a001 | \n",
" 6 | \n",
"
\n",
" \n",
" 3 | \n",
" a001 | \n",
" 4 | \n",
" 佐藤 | \n",
" a001 | \n",
" 8 | \n",
"
\n",
" \n",
" 2 | \n",
" a001 | \n",
" 3 | \n",
" 鈴木 | \n",
" a001 | \n",
" 7 | \n",
"
\n",
" \n",
" 0 | \n",
" a001 | \n",
" 1 | \n",
" 高橋 | \n",
" a001 | \n",
" 5 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" クラス_x 数学 氏名 クラス_y 国語\n",
"1 a001 2 伊藤 a001 6\n",
"3 a001 4 佐藤 a001 8\n",
"2 a001 3 鈴木 a001 7\n",
"0 a001 1 高橋 a001 5"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.merge(df01 ,df02,left_index=True,right_on='氏名',sort=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df02 = pd.DataFrame( {'氏名':['渡辺', '田中', '鈴木'], \n",
" 'クラス':['df02', 'df02', 'df02'],\n",
" '英語': [9, 10, 11], \n",
" '理科':[12, 13, 14]})\n",
"df02"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}