五表联筛:从五个表格中筛选出出现过两次及两次以上的人名

本文详细描述了一个Python函数,用于合并五个Excel表格,检测并输出出现两次及以上的人名,涉及数据处理和pandas库应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

五表联筛:从五个表格中筛选出出现过两次及两次以上的人名

需求分析:

1.把五个表格合并起来,合并之前必须确保五个表格的项是一样
2.合并之后查找哪些人出现过两次
3.最后输出结果

代码:

    def delete_from(self):
        # 读取五份表格文件
        table1 = pd.read_excel("外籍单列.xlsx",sheet_name='数据源')
        table2 = pd.read_excel("detele_from.xlsx",sheet_name='外聘教师')
        table3 = pd.read_excel("detele_from.xlsx",sheet_name='专任教师')
        table4 = pd.read_excel("detele_from.xlsx",sheet_name='行政人员')
        table5 = pd.read_excel("detele_from.xlsx",sheet_name='教辅人员')

        # 合并五份表格为一个大表格
        merged_table = pd.concat([table1, table2, table3, table4, table5])

        # 找出出现两次及两次以上的姓名
        duplicated_names = merged_table['姓名'][merged_table.duplicated(subset='姓名', keep=False)]

        # 输出这些姓名在哪些表格中
        for name in duplicated_names:
            tables_containing_name = [table_name for table_name, table in
                                      zip(['数据源', '外聘教师', '专任教师', '行政人员', '教辅人员'], [table1,table2, table3, table4, table5]) if name in table['姓名'].values]
             print(f"姓名 '{name}' 在表格{','.join(tables_containing_name)} 中出现了两次或更多次。")

重要知识点补充

tables_containing_name = [table_name for table_name, table in
                                      zip(['数据源', '外聘教师', '专任教师', '行政人员', '教辅人员'], [table1,table2, table3, table4, table5]) if name in table['姓名'].values]:
在这段代码中,tables_containing_name 是一个列表推导式。它通过迭代5个不同的表格('数据源', '外聘教师', '专任教师', '行政人员', '教辅人员')并检查每个表格中是否存在特定姓名。如果姓名在表格中出现了两次或更多次,就将这个表格的名称添加到列表中。

duplicated_names = merged_table['姓名'][merged_table.duplicated(subset='姓名', keep=False)]
首先,merged_table.duplicated(subset='姓名', keep=False) 针对表中的“姓名”列创建了一个布尔索引,表示在此列中是否存在重复的姓名。keep=False 保留所有重复的行,而不仅仅保留第一个或最后一个。
随后,merged_table['姓名'][...] 选取了表中所有重复姓名的数据。这行代码返回了所有在“姓名”列中出现重复的姓名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

5-StarrySky

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

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

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

打赏作者

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

抵扣说明:

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

余额充值