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