{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "9ec6ebc2", "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "id": "413b2f9f", "metadata": {}, "outputs": [], "source": [ "df = pd.read_excel('学生信息.xlsx',skiprows=1)" ] }, { "cell_type": "code", "execution_count": null, "id": "31be9769", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 7, "id": "dd627675", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
学号姓名性别年级班级账户名手环号通/住校
0847613曾笙2025级临时班847613CDSPTSZX3722606215通校
1205240217郭靖2025级0班205240217CDSPTSZX22802380通校
22024240217黄蓉2025级临时班2024240217CDSPTSZX3108630769通校
320250011曾曦蕊2025级临时班20250011CDSPTSZX22830060通校
420250012曾星睿2025级临时班20250012CDSPTSZX3108363489通校
...........................
78020250783彭彦晰2025级临时班20250783CDSPTSZX1620701492通校
78120250802魏腾一2025级临时班20250802CDSPTSZX1618071076通校
78220250805任梓玮2025级临时班20250805CDSPTSZX1619575092通校
78320250866张羽菲2025级临时班20250866CDSPTSZX1620005620通校
78420250617杨光墨辰2025级临时班20250617CDSPTSZX3108648785通校
\n", "

785 rows × 8 columns

\n", "
" ], "text/plain": [ " 学号 姓名 性别 年级 班级 账户名 手环号 通/住校\n", "0 847613 曾笙 男 2025级 临时班 847613CDSPTSZX 3722606215 通校\n", "1 205240217 郭靖 男 2025级 0班 205240217CDSPTSZX 22802380 通校\n", "2 2024240217 黄蓉 男 2025级 临时班 2024240217CDSPTSZX 3108630769 通校\n", "3 20250011 曾曦蕊 女 2025级 临时班 20250011CDSPTSZX 22830060 通校\n", "4 20250012 曾星睿 男 2025级 临时班 20250012CDSPTSZX 3108363489 通校\n", ".. ... ... .. ... ... ... ... ...\n", "780 20250783 彭彦晰 男 2025级 临时班 20250783CDSPTSZX 1620701492 通校\n", "781 20250802 魏腾一 女 2025级 临时班 20250802CDSPTSZX 1618071076 通校\n", "782 20250805 任梓玮 男 2025级 临时班 20250805CDSPTSZX 1619575092 通校\n", "783 20250866 张羽菲 女 2025级 临时班 20250866CDSPTSZX 1620005620 通校\n", "784 20250617 杨光墨辰 男 2025级 临时班 20250617CDSPTSZX 3108648785 通校\n", "\n", "[785 rows x 8 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 12, "id": "ef0a8145", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'1'" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\" 1\".strip()" ] }, { "cell_type": "code", "execution_count": null, "id": "60a3e782", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 24, "id": "4cb9da33", "metadata": {}, "outputs": [], "source": [ "df = pd.read_excel('学生信息.xlsx',skiprows=1,dtype=str)\n", "df2 = pd.read_excel('2025级学生班级_子1.xlsx',dtype=str)\n", "\n", "学号字典 = dict(zip(df2['学号'], df2['班级'].astype(\"str\")))\n", "\n", "# 直接通过map函数添加班级列,不存在的学号用'未找到'填充\n", "df['班级'] = df['学号'].map(学号字典).fillna('未找到')" ] }, { "cell_type": "code", "execution_count": 31, "id": "947a671a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "df中有但df2中没有的记录:\n", " 学号 姓名 性别 年级 班级 账户名 手环号 通/住校\n", "0 847613 曾笙 男 2025级 临时班 847613CDSPTSZX 3722606215 通校\n", "1 205240217 郭靖 男 2025级 0班 205240217CDSPTSZX 0022802380 通校\n", "2 2024240217 黄蓉 男 2025级 临时班 2024240217CDSPTSZX 3108630769 通校\n", "17 20250041 陈奕瑾 女 2025级 临时班 20250041CDSPTSZX 3108586721 通校\n", "31 20250080 杜雨欣 女 2025级 临时班 20250080CDSPTSZX 3108567745 通校\n", "38 20250098 冯雅琳 女 2025级 临时班 20250098CDSPTSZX 3108398001 通校\n", "48 20250123 郭明萱 女 2025级 临时班 20250123CDSPTSZX 3108359601 通校\n", "96 20250290 刘瑞泽 男 2025级 临时班 20250290CDSPTSZX 3108417121 通校\n", "130 20250402 苏子洛 男 2025级 临时班 20250402CDSPTSZX 3108648977 通校\n", "143 20250448 王晟骁 男 2025级 临时班 20250448CDSPTSZX 3108604769 通校\n", "153 20250475 王雅萱 女 2025级 临时班 20250475CDSPTSZX 3108626049 通校\n", "157 20250502 吴睿灿 男 2025级 临时班 20250502CDSPTSZX 3108654369 通校\n", "172 20250567 徐周塬 男 2025级 临时班 20250567CDSPTSZX 3107628913 通校\n", "233 20250772 李怡辰 女 2025级 临时班 20250772CDSPTSZX 3108433745 通校\n", "260 20258671 弋珂 女 2025级 临时班 20258671CDSPTSZX 0022681516 通校\n", "261 20258673 马艺诚 男 2025级 临时班 20258673CDSPTSZX 3108571633 通校\n", "276 20250021 陈佳逸 女 2025级 临时班 20250021CDSPTSZX 1619715284 通校\n", "369 20250169 黄心仪 女 2025级 临时班 20250169CDSPTSZX 1617731892 通校\n", "389 20250199 乐思彤 女 2025级 临时班 20250199CDSPTSZX 1619850820 通校\n", "419 20250246 李屹然 男 2025级 临时班 20250246CDSPTSZX 1619431076 通校\n" ] } ], "source": [ "import pandas as pd\n", "\n", "# 读取Excel文件,确保所有列都是字符串类型\n", "df = pd.read_excel('学生信息.xlsx', skiprows=1, dtype=str)\n", "df2 = pd.read_excel('2025级学生班级_子1.xlsx', dtype=str)\n", "\n", "# 为两个DataFrame添加唯一标识列(姓名+性别+学号)\n", "# 使用分隔符避免不同字段值拼接后产生歧义(例如\"张三四\"+\"男\" vs \"张三\"+\"四男\")\n", "df['唯一标识'] = df['姓名'] + '|' + df['性别'] + '|' + df['学号']\n", "df2['唯一标识'] = df2['学生姓名'] + '|' + df2['性别'] + '|' + df2['学号']\n", "\n", "# 找出df中有但df2中没有的唯一标识\n", "df独有标识 = df[~df['唯一标识'].isin(df2['唯一标识'])]['唯一标识']\n", "\n", "# 根据独有标识筛选出完整记录\n", "结果 = df[df['唯一标识'].isin(df独有标识)]\n", "\n", "# 输出结果(可以根据需要选择保留或删除'唯一标识'列)\n", "print(\"df中有但df2中没有的记录:\")\n", "print(结果.drop(columns=['唯一标识'])) # 删除临时的唯一标识列再显示" ] }, { "cell_type": "code", "execution_count": 37, "id": "a383efe9", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "\n", "# 读取Excel文件,确保所有列都是字符串类型\n", "df = pd.read_excel('学生信息.xlsx',usecols=['姓名','性别','学号'], skiprows=1, dtype=str)\n", "df2 = pd.read_excel('2025级学生班级_子1.xlsx',usecols=['学生姓名','性别','学号'], dtype=str)\n", "\n", "# # 为两个DataFrame添加唯一标识列(姓名+性别+学号)\n", "# df['唯一标识'] = df['姓名'] + '|' + df['性别'] + '|' + df['学号']\n", "# df2['唯一标识'] = df2['学生姓名'] + '|' + df2['性别'] + '|' + df2['学号']\n", "\n", "# # 找出df2中有但df中没有的唯一标识\n", "# df2独有标识 = df2[~df2['唯一标识'].isin(df['唯一标识'])]['唯一标识']\n", "\n", "# # 根据独有标识筛选出完整记录\n", "# 结果 = df2[df2['唯一标识'].isin(df2独有标识)]\n", "\n", "# # 输出结果\n", "# print(\"df2中有但df中没有的记录:\")\n", "# print(结果.drop(columns=['唯一标识'])) # 删除临时的唯一标识列\n", "row_strings= set()\n", "for _,row in df.iterrows():\n", " row_strings.add(f\"{row['姓名']}{row['性别']}{row['学号']}\")\n", "row_strings1 = set()\n", "for _,row in df2.iterrows():\n", " row_strings1.add(f\"{row['学生姓名']}{row['性别']}{row['学号']}\")" ] }, { "cell_type": "code", "execution_count": 38, "id": "56250fbc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'彭睦雅男20250832', '李沛珊女20250831', '杨槟源男20250830', '杨颜尊女20250833'}" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "row_strings1 - row_strings" ] }, { "cell_type": "code", "execution_count": 35, "id": "34dae11a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(769, 4)" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.shape" ] }, { "cell_type": "code", "execution_count": 36, "id": "b8ed5e95", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(785, 4)" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.shape" ] }, { "cell_type": "code", "execution_count": null, "id": "5a58f936", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "base", "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.4" } }, "nbformat": 4, "nbformat_minor": 5 }