如何在Python中合并相同值行的列(附考勤表格示例)
用Python合并考勤表格中同一姓名的记录
可以使用Python的pandas库快速实现需求,它是处理表格数据的常用工具,步骤如下:
步骤1:准备数据
如果你的数据来自Excel/CSV文件,直接用pandas读取;如果是手动构造示例数据,可参考如下代码:
import pandas as pd # 构造示例数据(替换成你实际的读取代码) attendance_data = [ ["Alif", "100061", "17/12/2022 07:53:26", "", "指纹"], ["Alif", "100061", "17/12/2022 13:00:25", "", "指纹"], ["Alif", "100061", "19/12/2022 07:54:59", "", "指纹"], ["Alif", "100061", "19/12/2022 16:18:14", "", "指纹"], ["Alif", "100061", "20/12/2022 07:55:54", "", "指纹"], ["Alif", "100061", "20/12/2022 16:16:16", "", "指纹"], ["Alif", "100061", "21/12/2022 07:54:46", "", "指纹"], ["Alif", "100061", "21/12/2022 16:15:41", "", "指纹"], ["Alif", "100061", "22/12/2022 07:55:54", "", "指纹"], ["Alif", "100061", "22/12/2022 16:15:59", "", "指纹"], ["Alif", "100061", "23/12/2022 07:56:26", "", "指纹"], ["Alif", "100061", "23/12/2022 16:16:56", "", "指纹"], ["budi", "100063", "17/12/2022 07:45:28", "", "指纹"], ["budi", "100063", "17/12/2022 13:00:23", "", "指纹"], ["budi", "100063", "19/12/2022 07:39:29", "", "指纹"], ["budi", "100063", "19/12/2022 16:17:37", "", "指纹"], ["budi", "100063", "20/12/2022 13:13:06", "", "指纹"], ["budi", "100063", "20/12/2022 16:16:14", "", "指纹"], ["budi", "100063", "21/12/2022 07:39:54", "", "指纹"], ["budi", "100063", "21/12/2022 16:15:38", "", "指纹"], ["budi", "100063", "22/12/2022 07:39:02", "", "指纹"], ["budi", "100063", "22/12/2022 16:15:55", "", "指纹"], ["budi", "100063", "23/12/2022 07:41:13", "", "指纹"], ["budi", "100063", "23/12/2022 16:16:25", "", "指纹"] ] df = pd.DataFrame(attendance_data, columns=["姓名", "身份证号", "日期/时间", "PIN码", "验证方式"])
如果是读取文件:
# 读取Excel文件 df = pd.read_excel("你的考勤文件.xlsx") # 读取CSV文件 df = pd.read_csv("你的考勤文件.csv")
步骤2:分组合并记录
通过groupby按姓名分组,然后对不同列做聚合处理:
- 身份证号、PIN码、验证方式:同一人数据一致,取第一条记录即可
- 日期/时间:将所有记录用换行(或其他分隔符)拼接在一起
# 分组聚合 merged_df = df.groupby("姓名", as_index=False).agg({ "身份证号": "first", "日期/时间": "\n".join, # 用换行分隔,也可替换成"; "等其他分隔符 "PIN码": "first", "验证方式": "first" })
步骤3:查看或导出结果
打印合并后的表格:
print(merged_df)
如果需要导出为Markdown格式表格(方便分享):
print(merged_df.to_markdown(index=False))
导出为Excel文件:
merged_df.to_excel("合并后的考勤数据.xlsx", index=False)
示例输出
合并后的Markdown表格如下:
| 姓名 | 身份证号 | 日期/时间 | PIN码 | 验证方式 |
|---|---|---|---|---|
| Alif | 100061 | 17/12/2022 07:53:26 17/12/2022 13:00:25 19/12/2022 07:54:59 ... | 指纹 | |
| budi | 100063 | 17/12/2022 07:45:28 17/12/2022 13:00:23 19/12/2022 07:39:29 ... | 指纹 |
内容的提问来源于stack exchange,提问作者Akazadi
相关产品推荐
相关产品推荐

