萝卜头402 2024-06-01 10:52 采纳率: 0%
浏览 7

怎么让execl的数据按照日期排列,身份证号相同的又放在一起

要求按照时间排序,同一身份证,不同时间的数据放一起,这个怎么处理

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2024-06-01 10:52
    关注

    上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    要按照日期排序并将相同身份证号的数据放在一起,可以按照以下步骤进行处理:

    1. 读取 Excel 数据:使用合适的库(如 xlrd)读取 Excel 数据,并将数据存储在一个列表中。

    2. 按日期排序:根据数据中的日期字段,使用适当的排序函数(如 sorted())对列表中的数据进行排序。将数据按照日期从早到晚的顺序排列。

    3. 分组:遍历已排序的列表,对于相同身份证号的数据,将它们放在一个子列表中。可以使用字典来作为一个分组集合,键为身份证号,值为相应的数据列表。遍历列表时,将数据添加到相应的键中。

    4. 导出数据:将分组后的数据导出到一个新的 Excel 文件中。可以使用适当的库(如 xlwt)创建一个新的 Excel 文件,并将分组后的数据写入到该文件中。

    具体的代码实现如下:

    import xlrd
    import xlwt
    from xlutils.copy import copy
    
    # 读取 Excel 数据
    workbook = xlrd.open_workbook('input.xls')
    sheet = workbook.sheet_by_index(0)
    data = [sheet.row_values(row) for row in range(1, sheet.nrows)]
    
    # 按日期排序
    sorted_data = sorted(data, key=lambda x: x[0])
    
    # 分组
    groups = {}
    for row in sorted_data:
        id_card = row[1]
        if id_card not in groups:
            groups[id_card] = [row]
        else:
            groups[id_card].append(row)
    
    # 导出数据
    output = xlwt.Workbook()
    sheet = output.add_sheet('Sheet1')
    row = 0
    for id_card, rows in groups.items():
        for r in rows:
            for i, value in enumerate(r):
                sheet.write(row, i, value)
            row += 1
    
    output.save('output.xls')
    

    注意:上述代码假设 Excel 文件中的第一列是日期,第二列是身份证号。你需要根据实际情况进行调整。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月1日