【问题标题】:python compare two excel sheet and append correct recordpython比较两个excel表并附加正确的记录
【发布时间】:2016-07-14 15:11:16
【问题描述】:

我需要创建一个 Excel 表来比较两个样本表,其中一个包含序列号和其他信息。第二张表包含保修日期。例如, source1 表包含如下数据

Model       Serial     Location
Dell        1234       A
Thoshiba    2345       B
Apple       3456       C
Cisco       4567       D
Sun         5678       E

source2 包含如下数据

Serial  Warranty Status
2345    1/1/2010
4567    2/2/2012
1112    3/2/2015

结果应该是

Model        Serial     Location    Warranty Status
Dell         1234           A        Not Found
Thoshiba     2345           B        1/1/2010
Apple        3456           C        Not Found
Cisco        4567           D        2/2/2012
Sun          5678           E        Not Found
Not Found    1112          Not Found    3/2/2015

我找到了一些示例脚本,但我的场景包含:

  1. 数据量大,运行时间太长
  2. source1 和 source2 文件中的序列号顺序不同
  3. 在任一源文件中都存在序列号 dokin 的情况

请给我一些建议和最佳算法以更快地完成此操作。

【问题讨论】:

    标签: python excel sorting comparison


    【解决方案1】:

    试试下面我修改过的代码:

    import pandas as pd
    
    source1_df = pd.read_excel('a.xlsx', sheetname='source1')
    source2_df = pd.read_excel('a.xlsx', sheetname='source2')
    joined_df = pd.merge(source1_df,source2_df,on='Serial',how='outer')
    joined_df.to_excel('/home/user1/test/result.xlsx')
    

    我不是 python 方面的专家,但上面一位工作过。

    【讨论】:

      【解决方案2】:

      安装pandas,然后您可以将每个工作表加载为数据框并通过Serial 加入:

      import pandas as pd
      
      source1_df = pd.read_excel('path/to/excel', sheetname='source1_sheet_name')
      source2_df = pd.read_excel('path/to/excel', sheetname='source2_sheet_name')
      
      joined_df = source1_df.join(source2_df, on='Serial')
      
      joined_df.to_excel('path/to/output_excel')
      

      【讨论】:

      猜你喜欢
      • 2017-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 2020-10-17
      • 2015-07-09
      • 2015-08-18
      • 1970-01-01
      相关资源
      最近更新 更多