5.70. mvjoin ベクトル要素の参照結合

ベクトル要素をキーにして参照データ上のベクトル型データを結合する。 ベクトル型の項目とは、スペースで区切られた複数の文字列を値として持つ項目である。 なお、参照データデータを一旦全てメモリにセットするので、 巨大な参照データを指定した場合はメモリを使い果たす可能性があることに注意する。

パラメータ

i= : 型=str , 任意(default=標準入力)

入力データを指定する。

o= : 型=str , 任意(default=標準出力)

出力データを指定する。

vf= : 型=str , 必須

結合キーとなるベクトルの項目名( i= データ上)を指定する。
複数項目指定可能。ベクトル要素はソーティングされている必要はない。
結果の項目名を変更したいときは、:(コロン)に続けて新項目名を指定する。

A= : 型=bool , 任意(default=False)

vf= で:(コロン)に続けて指定した項目名で、新たな項目が追加される。
なお A オプションを指定した場合、 vf= パラメータで指定するすべての
項目に新項目名を指定しなければならない。

m= : 型=str , 任意(default=標準入力)

参照データを指定する。

K= : 型=str , 必須

参照データ( m= )上の結合キーとなるベクトル要素の項目名を指定する。
並べ変わっている必要はないが、ベクトル要素は単一化されていなければならない。
単一化されていない時の動作は不定である。

f= : 型=str , 必須

結合するベクトル(要素)項目名を指定する。

n= : 型=str , 任意(default=)

vf=K= のベクトル要素がマッチしなかった場合に結合する文字列を指定する。
省略した場合、対象のベクトル(要素)の結合は行われない。

delim= : 型=str , 任意(default=)

ベクトル型データの区切り文字を指定する。

利用例

importと入力データ(CSV)の準備

 1import nysol.mcmd as nm
 2
 3with open('dat1.csv','w') as f:
 4  f.write(
 5'''items
 6b a c
 7c c
 8e a a
 9''')
10
11with open('ref1.csv','w') as f:
12  f.write(
13'''item,taxo
14a,X Y
15b,X
16c,Z Z
17''')
18
19with open('dat2.csv','w') as f:
20  f.write(
21'''items1,items2
22b a c,b b
23c c,a d
24e a a,a a
25''')
26
27with open('ref2.csv','w') as f:
28  f.write(
29'''item,taxo
30a,X
31b,X
32c,Y
33d,Y
34''')

ベクトルを結合する例

1nm.mvjoin(vf="items", K="item", m="ref1.csv", f="taxo", i="dat1.csv", o="rsl1.csv").run()
2### rsl1.csv の内容
3# items
4# b a c X X Y Z Z
5# c c Z Z Z Z
6# e a a X Y X Y

複数項目に対して適用する例

1nm.mvjoin(vf="items1,items2", K="item", m="ref2.csv", f="taxo", i="dat2.csv", o="rsl2.csv").run()
2### rsl2.csv の内容
3# items1,items2
4# b a c X X Y,b b X X
5# c c Y Y,a d X Y
6# e a a X X,a a X X

関連メソッド