pythonで2つのcsvファイルを比較し重複している値を抽出する

投稿者: Anonymous

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

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

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

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

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

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

598  株式会社日医リース,東京都品川区西五反田1-3-8五反田御幸ビル4F

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

### 両ファイル比較検証 ###
#ライブラリー呼び出し
import pandas as pd
import numpy as np
import pathlib as path

#CSVファイル読み込み
path_ip = path.WindowsPath(r"c:UsersDesktopファイル比較検証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:UsersDesktopファイル比較検証検証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'])

解決

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

#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')
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *