41800


2つのcsvファイルを比較して、両ファイル内に重複している内容で抽出する方法を考えており  
適切なコードがわからず、御教授願います。

(py勉強中のため、web・本等のプログラム内容を無理やりな方法で作成しております。不備はご容赦下さい)

データーの読み込み・データーフレーム迄の形はできたのですが  
これより先の、データフレームを使用してデータの抽出プログラム方法がわからず御教授お願い致します。  
(データ数量は、今回抜粋しておりますが両csvファイルとも実際は約50万件ほどのデータです)

**下記内容が、比較データになります。**

[code]

    CRcode  client name & address1(TDｸﾗｲｱﾝﾄ0213 csvﾃﾞｰﾀ)
    598     株式会社日医ﾘｰｽ,東京都品川区西五反田1-3-8五反田御幸ﾋﾞﾙ4F
    2598    株式会社ﾌﾗﾜｰｵｰｸｼｮﾝｼﾞｬﾊﾟﾝ,東京都大田区東海2-2-1大田市場花き部
    341     株式会社 大成紙工,
    796     ｾﾝｺｰ引越 株式会社,
    
    CRcode1 client name & address2(検証14csvﾃﾞｰﾀ)
    200 　　株式会社日医ﾘｰｽ,東京都品川区西五反田1-3-8五反田御幸ﾋﾞﾙ4F
    4500    大成紙工株式会社,群馬県北群馬郡吉岡町上野田1329
    
[/code]

**抽出したいデータ内容(上記内容より重複している結果のイメージを抽出したい内容です)**

[code]

    598 　株式会社日医ﾘｰｽ,東京都品川区西五反田1-3-8五反田御幸ﾋﾞﾙ4F
    
[/code]

(下記が書きましたpyコードです)

[code]

    ### 両ファイル比較検証 ###
    #ライブラリー呼び出し
    import pandas as pd
    import numpy as np
    import pathlib as path
    
    #CSVファイル読み込み
    path_ip = path.WindowsPath(r"c:\Users\Desktop\ファイル比較検証\TDクライアント0213.csv") 
    t1 = pd.read_csv(path_ip, engine="python")
    t1['CRcode'] = t1['CRcode'].astype(str).str.zfill(8)
    t1['client name & address1'] = t1['client name & address1'].astype(str)
    
    #CSVファイル読み込み
    path_ip = path.WindowsPath(r"c:\Users\Desktop\ファイル比較検証\検証14.csv") 
    t2 = pd.read_csv(path_ip, engine="python")
    t2['CRcode1'] = t2['CRcode1'].astype(str).str.zfill(9)
    t2['client name & address2'] = t2['client name & address2'].astype(str)
    
    #deta 抽出
    t1 = pd.DataFrame({'CRcode': t1['CRcode'],
                      'client name & address1': t1['client name & address1']},
                      columns = ['CRcode','client name & address1'])
    #deta 抽出
    t2 = pd.DataFrame({'CRcode1': t2['CRcode1'],
                      'client name & address2': t2['client name & address2']},
                      columns = ['CRcode1','client name & address2'])
    
[/code]


CC BY-SA 3.0
2018-02-16T09:02:01.177
41775
2018-02-19T05:35:42.960
2018-02-16T10:23:42.583
19110
27423
question
python pandas csv
pythonで2つのcsvファイルを比較し重複している値を抽出する


ベストではないと思いますが、こんな感じでどうでしょうか。

[code]

    #deta 抽出
    t1 = pd.DataFrame({'CRcode': t1['CRcode'],
                      'client name & address1': t1['client name & address1']},
                      columns = ['CRcode','client name & address'])
    #deta 抽出
    t2 = pd.DataFrame({'CRcode1': t2['CRcode1'],
                      'client name & address2': t2['client name & address2']},
                      columns = ['CRcode1','client name & address'])
    
    n = len(t1)
    mask = pd.concat([t1, t2]).duplicated(subset='client name & address', keep=False)[:n]
    # t1[mask]
    t1[mask].drop_duplicates(subset='client name & address')
    
[/code]


CC BY-SA 3.0
2018-02-17T04:45:45.827
41800
2018-02-19T05:35:42.960
2018-02-19T05:35:42.960
26311
26311
41775
answer