5.72. mvreplace ベクトル要素の参照置換¶
ベクトル要素をキーにして参照データ上のベクトル型データで置換する。 ベクトル型の項目とは、スペースで区切られた複数の文字列を値として持つ項目である。 なお、参照データデータを一旦全てメモリにセットするので、 巨大な参照データを指定した場合はメモリを使い果たす可能性があることに注意する。
パラメータ¶
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=)
ベクトル型データの区切り文字を指定する。
共通パラメータ¶
i= , o= , delim= , assert_diffSize= , assert_nullin= , assert_nullout= , nfn= , nfno= , x= , tmppath= , precision=
利用例¶
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.mvreplace(vf="items", K="item", m="ref1.csv", f="taxo", i="dat1.csv", o="rsl1.csv").run() 2### rsl1.csv の内容 3# items 4# X X Y Z Z 5# Z Z Z Z 6# e X Y X Y
複数項目に対して適用する例
1nm.mvreplace(vf="items1,items2", K="item", m="ref2.csv", f="taxo", i="dat2.csv", o="rsl2.csv").run() 2### rsl2.csv の内容 3# items1,items2 4# X X Y,X X 5# Y Y,X Y 6# e X X,X X
関連メソッド¶
mvjoin ベクトル要素の参照結合 : 要素の置換ではなく、結合であれば
mvjoin
を使う。