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

関連メソッド