2016-08-09 19 views
-2

2つのExcelファイルがあります。両方のファイルには、Customer_NameとCustomer_Noの2つの共通列があります。最初のExcelファイルは約800kの行を持ち、2番目のファイルは460しかありません。両方のファイルに共通のデータを持つデータフレームを取得したい、つまりCustomer_NameとCustomer_Noの両方を持つ最初のファイルから行を取得します。 2番目のファイルにあります。私は.isinを使ってみましたが、これまでのところ、1つの変数(Column)だけを使った例が見つかりました。前もって感謝します!Pandasで2つのExcelファイルを比較し、2つの列に同じ値を持つ行を返します

答えて

2

使用merge

df = pd.merge(df1, df2, on=['Customer_Name','Customer_No']) 

あなたは別の列名を持っている場合はleft_onを使用してright_on

df = pd.merge(df1, 
       df2, 
       left_on=['Customer_Name','Customer_No'], 
       right_on=['Customer_head','Customer_Id']) 
+0

回答を編集して、確認してください。 – jezrael

+0

私の答えが役に立ったら、[同意する](http://meta.stackexchange.com/a/5235/295067)を忘れないでください。ありがとう。 – jezrael

+0

しかし、私は代わりにKeyErrorを取得しています。私は列のデータ型をチェックし、それらが同じであることを確認しました。 :( – Ruffy26

0

IIUC、あなたは、第二のファイルから余分な列を必要としない - それが使用されます参加するだけで、このようにすることができます:

common_cols = ['Customer_Name','Customer_No'] 

df = (pd.read_excel(filename1) 
     .join(pd.read_excel(filename2, usecols=common_cols), 
          on=common_cols)) 
0

私は直接的な方法は次のようになると思う。

ここ
df_file1 = pd.read_csv(file1, index_col) # set Customer_No 
df_file2 = pd.read_csv(file2, index_col) # set Customer_No 
for index, row in df_file1.iterrows(): 
    if row.get_value('Customer_name) in df_file2['Customer_name'].values: 

あなたは単に整数で、カウントまたは必要に応じて、DFをもたらすために、[インデックス、行]を追加のようないくつかの複雑な仕事を生成することができます。

関連する問題