2016-07-11 4 views
0

2つのサンプルシートを比較するExcelシートを作成する必要があります。シリアル番号などの情報が含まれています。 2番目のシートには保証日が含まれています。 python 2つのExcelシートを比較して正しいレコードを追加

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

以下のソース2は

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シートにはデータが含まれています含まれています:

  1. データの大いいえ、それは
  2. シリアル番号は、両方のソース1に同じ順序で来ていない実行するために多くの時間がかかり、ソース2のファイル
  3. ケースは、シリアル番号ドスキンにあるソースファイルのいずれかに存在して

これをより迅速に行うための提案と最適なアルゴリズムを教えてください。

答えて

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の熟練ですが、1つ上の方は働きました。

0

、あなたがデータフレームとして各シートをロードし、Serialで参加することができ、pandasをインストールします。

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') 
+0

これには多少の誤差が生じます。 http://stackoverflow.com/questions/38347985/python-pandas-merging-excel-sheets-not-working – theG

関連する問題