前提・実現したいこと
2つのcsvである列同士を比較して値が一致する行だけを抜き出し、結果を新しいcsvとして出力したいです。
2つのcsvにヘッダーはありません。
pandas
を使用して出力はできましたが、列名の指定の仕方でもっと良い書き方があれば知りたいです。
また、pandas
でなくても他に良い方法があれば知りたいです。
下記のソースコードには出力対象となる列は3つですが、実際にはもっと多くの列名になので簡潔な方法があればと思い、質問しました。
以下、補足です
- 実際のaファイルには20列存在します
- 一致を確認する列は一つだけです
- 一致を確認しない列(ただ付随するだけ)はaファイルにもbファイルにもありますが、
結果として出力したいのはaファイルの項目だけです
よろしくお願いします。
該当のソースコード
python
1# csv 2target = 'a.csv' 3comp_target = 'b.csv' 4 5# aファイルを読み込む 6df1 = pd.read_csv( 7 target, 8 sep='\t', 9 encoding='utf-8', 10 dtype = {'AccountCode__c':'object'}, 11 names=['AccountCode__c', 12 'AccountName__c', 13 'Capital__c'] 14) 15 16# bファイルのAccountCode__Cを読み込む 17df2 = pd.read_csv( 18 comp_target, 19 sep='\t', 20 encoding='utf-8', 21 dtype = {'AccountCode__c':'object'}, 22 usecols=[1], 23 names=['AccountCode__c'] 24) 25 26# AccountCode__cが一致するレコードだけ抽出する 27result = df1.merge(df2, left_on=['AccountCode__c'], right_on=['AccountCode__c'], how='inner') 28 29# 抽出結果をcsvに出力する 30rslt_file = 'result.csv' 31result.to_csv(rslt_file, sep='\t', encoding='utf_8', index=False)
試したこと
最初はisin
で結果を得ようと試みましたが結果をうまく得られなかったので、merge
で出力に至りました。
補足情報(FW/ツールのバージョンなど)
python 3.8.1
vscode 1.48.2
回答1件
あなたの回答
tips
プレビュー