5.34. mnrcommon 参照ファイルの複数範囲条件による行撰択¶
参照データの範囲条件にマッチする入力データの行を選択する。
k=
パラメータで指定した入力データの項目値と K=
パラメータで指定した参照データの項目値が同じ行について、
r=
でパラメータで指定した項目値が R=
パラメータで指定した2項目の値の範囲条件(項目1以上項目2未満)にマッチすれば選択する。
数値として処理したい場合は r=
パラメータの項目名のあとに %n
をつけること。
パラメータ¶
i= : 型=str , 任意(default=標準入力)
入力データを指定する。
o= : 型=str , 任意(default=標準出力)
出力データを指定する。
k= : 型=str , 任意(default=キーブレイク処理しない)
入力データ上の突き合わせる項目名リスト(複数項目指定可)を指定する。ここで指定した入力データの項目とK=
パラメータで指定された参照データの項目が同じ行の項目結合が行われる。
m= : 型=str , 任意(default=標準入力)
参照データを指定する。このパラメータが省略された時には標準入力が用いられる。(i=
指定ありの場合)
R= : 型=str , 必須
参照データ上の範囲項目名(start,end)を指定する。第一項目のNULL値は無限小,第二項目のNULL値は無限大として扱われる。
fr= : 型=str , 必須
範囲比較される入力データ上の項目名を指定する。ここで指定した参照データの項目とk=
パラメータで指定された入力データの項目が同じ行が選択される。数値として処理したい場合はr=
パラメータの項目名のあとに%nをつける。
K= : 型=str , 任意(default=k=と同一項目名)
参照データ上の突き合わせる項目名リスト(複数項目指定可)ここで指定した参照データの項目とk=
パラメータで指定された入力データの項目が同じ行の項目結合が行われる。参照データ上にk=
パラメータで指定した入力データ上の項目と同名の項目が存在する場合は指定する必要はない。
u= : 型=str , 任意(default=出力しない)
指定の条件に一致しない行を出力するデータ。
r= : 型=bool , 任意(default=False)
条件反転R=
パラメータで指定した行番号以外の行を選択する。
共通パラメータ¶
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'''date,amount 620080123,10 720080203,10 820080203,20 920080203,45 10200804l0,50 11''') 12 13with open('ref1.csv','w') as f: 14 f.write( 15'''date,amountF,amountT 1620080203,5,15 1720080203,40,50 18''')
基本例
日付項目の値が 20080203
で、 amount
項目の値が 5
以上 15
未満の行、および 40
以上 50
未満の行を選択する。
1nm.mnrcommon(k="date", m="ref1.csv", R="amountF,amountT", rf="amount%n", i="dat1.csv", o="rsl1.csv").run() 2### rsl1.csv の内容 3# date%0,amount 4# 20080203,10 5# 20080203,45
条件反転
r=True
を付けると選択条件は反転する。
1nm.mnrcommon(k="date", m="ref1.csv", R="amountF,amountT", rf="amount%n", r=True, i="dat1.csv", o="rsl2.csv").run() 2### rsl2.csv の内容 3# date%0,amount 4# 20080123,10 5# 20080203,20 6# 200804l0,50
関連メソッド¶
mcommon 参照ファイルによる行選択 : 範囲でなく文字列マッチで選択したい場合はこのコマンドを使う。
mnrjoin 参照ファイルの複数範囲条件による自然結合 : 選択ではなく参照データの項目を結合する。