【办公类-112-02】20250831儿童基本情况登记+户籍+去重居委会(运用deepseek的Python编程,实现excle数据匹配和提取判断)

背景需求:

运用程序,自动匹配两个excle表格的数据。实现学号配对、数据提取和判断

【办公类-112-01】20250827儿童基本情况登记(运用deepseek的Python编程,实现excle数据匹配和提取判断)-CSDN博客文章浏览阅读1.2k次,点赞43次,收藏25次。【办公类-112-01】20250827儿童基本情况登记(运用deepseek的Python编程,实现excle数据匹配和提取判断) https://blog.csdn.net/reasonsummer/article/details/150845992?spm=1011.2415.3001.5331

新的需求:最后一列加入户籍地址

思路

1、在表格里补一个户籍地址的列

2、考虑把居住地址和户籍地址中的“居委”做成列表,删除

02、匹配学号并排序

'''
把已经合并成一个xlsx的园园通表格,与班级信息表一起匹配学号,并学号列升序、班级列升序
Deepseek,阿夏
20250831
'''

import pandas as pd

# 读取1.xlsx
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\20250825_2025_学年出入所(园)儿童基本情况登记  表一空'
df_main = pd.read_excel(path+r'\01(托小)园园通信息合并.xlsx')

# 获取2.xlsx的所有工作表名
xls = pd.ExcelFile(path+r'\班级信息表.xlsx')
sheet_names = xls.sheet_names  # 获取工作表名称

# 读取并合并2.xlsx的所有工作表
df_list = []

for sheet in sheet_names:
    df_sheet = pd.read_excel(xls, sheet_name=sheet)
    # 确保每个工作表都有班级信息(工作表名作为班级)
    df_sheet['班级'] = sheet  # 添加班级列,值为工作表名
    df_list.append(df_sheet)

df_info = pd.concat(df_list, ignore_index=True)

# 使用班级和姓名进行匹配
df_merged = pd.merge(df_main, 
                    df_info[['班级', '姓名', '学号']], 
                    left_on=['所在班级', '姓名'], 
                    right_on=['班级', '姓名'], 
                    how='left')

# 移动学号列到最前面
cols = df_merged.columns.tolist()
cols = ['学号'] + [col for col in cols if col != '学号']
df_merged = df_merged[cols]

# 关键修改:先按班级升序,同一班级内按学号升序
# 确保学号是数值类型,以便正确排序
df_merged['学号'] = pd.to_numeric(df_merged['学号'], errors='coerce')

# 按班级优先排序,再按学号排序
df_merged = df_merged.sort_values(by=['所在班级', '学号'], ascending=[True, True])

# 保存结果
df_merged.to_excel(path+r'\02(托小)园园通信息匹配学号.xlsx', index=False)

print("处理完成!已按班级升序排列,同班级内按学号升序排列。")
    

删除掉学校附近的居委会

'''
20250825_2025_学年出入所(园)儿童基本情况登记  表一空  05
1.去掉地址中的重复信息,如上海市上海市
2.去不掉居委会(列表指定内容删除)
deepseek,阿夏
20250827
'''

import pandas as pd
import re

def remove_duplicate_parts(address):
    """
    去除地址中的连续重复部分和特定字样
    """
    if pd.isna(address) or address == '':
        return address
    
    result = str(address)
    
    # 首先处理完整的地址重复(如:上海市闵行区XXX上海市闵行区XXX)
    # 匹配从开头到结尾的重复模式
    duplicate_pattern = r'^(.+?)(?=\1)'
    result = re.sub(duplicate_patte
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值