5.39. mpaste 参照ファイル項目の行番号マッチング結合

入力データと参照データを行番号でマッチングさせて結合する。 データ件数が異なる場合は、少い方のデータに合わせる。 nN オプションを指定することでマッチングできな行もNULL値で結合することが可能である。

パラメータ

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

入力データを指定する。

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

出力データを指定する。

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

結合する参照データ上の項目名リスト(複数項目指定可)。
省略するとキー項目を除いた全ての項目が結合される。

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

参照データを指定する。
このパラメータが省略された時には標準入力が用いられる。( i= 指定ありの場合)

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

入力データにあって参照データにない場合にNULL値を出力する。

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

参照データにあって入力データにない場合にNULL値を出力する。

利用例

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

 1import nysol.mcmd as nm
 2
 3with open('dat1.csv','w') as f:
 4  f.write(
 5'''id1
 61
 72
 83
 94
10''')
11
12with open('ref1.csv','w') as f:
13  f.write(
14'''id2
15a
16b
17c
18d
19''')
20
21with open('ref2.csv','w') as f:
22  f.write(
23'''id2
24a
25b
26''')
27
28with open('ref3.csv','w') as f:
29  f.write(
30'''id2,val
31a,R0
32b,R1
33c,R2
34d,R3
35''')

基本例

1nm.mpaste(m="ref1.csv", i="dat1.csv", o="rsl1.csv").run()
2### rsl1.csv の内容
3# id1,id2
4# 1,a
5# 2,b
6# 3,c
7# 4,d

行数が異なる例

入力ファイルと参照ファイルで行数が異なる場合は、少いファイルの行数に合わせる。

1nm.mpaste(m="ref2.csv", i="dat1.csv", o="rsl2.csv").run()
2### rsl2.csv の内容
3# id1,id2
4# 1,a
5# 2,b

外部結合

n=True を指定すると、参照ファイルの行数が少なくても、対応しない入力ファイルの行もNULL値を結合して出力する。

1nm.mpaste(m="ref2.csv", n=True, i="dat1.csv", o="rsl3.csv").run()
2### rsl3.csv の内容
3# id1,id2
4# 1,a
5# 2,b
6# 3,
7# 4,

結合項目を指定

1nm.mpaste(f="val", m="ref3.csv", i="dat1.csv", o="rsl4.csv").run()
2### rsl4.csv の内容
3# id1,val
4# 1,R0
5# 2,R1
6# 3,R2
7# 4,R3

関連メソッド