5.11. mcommon 参照ファイルによる行選択¶
k=
パラメータで指定した入力データの項目値と m=
パラメータで指定した参照データの項目値を比較し、同じ値を持つ入力データの行を選択する。
パラメータ¶
i= : 型=str , 任意(default=標準入力)
入力データを指定する。
o= : 型=str , 任意(default=標準出力)
出力データを指定する。
k= : 型=str , 必須
入力データ上の突き合わせる項目名リスト(複数項目指定可)ここで指定した入力データの項目とK=
パラメータで指定された参照データの項目が同じ行が選択される。同じ値が複数行連続していてもよい。
m= : 型=str , 任意(default=標準入力)
参照データを指定する。またこのパラメータが省略された時には標準入力が用いられる。(i=
指定ありの場合)
K= : 型=str , 任意(default=k=と同一項目名)
参照データ上の突き合わせる項目名リスト(複数項目指定可)ここで指定した参照データの項目とk=
パラメータで指定された入力データの項目が同じ行が選択される。参照データ上にk=
パラメータで指定した入力データ上の項目と同名の項目が存在する場合は指定する必要はない。同じ値が複数行連続していてもよい。
u= : 型=str , 任意(default=出力しない)
指定の条件に一致しない行を出力するデータ。
r= : 型=bool , 任意(default=False)
条件反転k=
パラメータで指定した入力データの項目値とm=
パラメータで指定した参照データの項目値を比較し、同じ値を持たない入力データの行を選択する。
共通パラメータ¶
i= , o= , assert_diffSize= , assert_nullkey= , nfn= , nfno= , x= , q= , tmppath= , precision=
利用例¶
importと入力データ(CSV)の準備
1import nysol.mcmd as nm 2 3with open('dat1.csv','w') as f: 4 f.write( 5'''customer,quantity 6A,1 7B,2 8C,1 9D,3 10E,1 11''') 12 13with open('ref1.csv','w') as f: 14 f.write( 15'''customer,gender 16A,female 17B,male 18E,female 19''') 20 21with open('ref2.csv','w') as f: 22 f.write( 23'''customerID,gender 24A,female 25B,male 26E,female 27''') 28 29with open('dat3.csv','w') as f: 30 f.write( 31'''customer,quantity 32A,1 33A,2 34A,3 35B,1 36D,1 37D,2 38''') 39 40with open('ref3.csv','w') as f: 41 f.write( 42'''customer 43A 44A 45D 46''')
基本例
入力ファイルにある customer
項目と、参照ファイルにある customer
項目が同じ値を持つ入力ファイルの行を選択する。
それ以外のデータは oth.csv
に出力する。
1nm.mcommon(k="customer", m="ref1.csv", u="oth.csv", i="dat1.csv", o="rsl1.csv").run() 2### oth.csv の内容 3# customer%0,quantity 4# C,1 5# D,3 6### rsl1.csv の内容 7# customer%0,quantity 8# A,1 9# B,2 10# E,1
同じ値を持たない入力ファイルの行選択
r=True
オプションを付けることで、条件が逆転し、参照ファイルにない customer
を選択することになる。
1nm.mcommon(k="customer", m="ref1.csv", r=True, i="dat1.csv", o="rsl2.csv").run() 2### rsl2.csv の内容 3# customer%0,quantity 4# C,1 5# D,3
結合キー項目名が異なる場合
結合キーの項目名が異なる場合は、 K=
で指定する。
1nm.mcommon(k="customer", K="customerID", i="dat1.csv", m="ref2.csv", o="rsl3.csv").run() 2### rsl3.csv の内容 3# customer%0,quantity 4# A,1 5# B,2 6# E,1
キー項目に重複行がある場合の例
参照ファイルと入力ファイルのキー項目に重複行があっても選択可能。
1nm.mcommon(k="customer", m="ref3.csv", r=True, i="dat3.csv", o="rsl4.csv").run() 2### rsl4.csv の内容 3# customer%0,quantity 4# B,1
関連メソッド¶
mselstr 文字列による行選択 : 参照データの結合キーの種類数が少なければこのコマンドでも対応できる。
mnrcommon 参照ファイルの複数範囲条件による行撰択 : 参照データの結合キーがユニークでなければこちらを使う。
mjoin 参照ファイルの項目結合 : 選択だけでなく、項目を結合したい場合はこのコマンド。