5.4. mbest 指定行の選択¶
指定した行番号の行を選択する。
行番号は0から始まることに注意する(項目名行は除いて、データ本体の先頭行が0行目)。
行番号は fr=
と to=
(もしくは size=
)で指定する。
パラメータ¶
i= : 型=str , 任意(default=標準入力)
入力データを指定する。
o= : 型=str , 任意(default=標準出力)
出力データを指定する。
s= : 型=str , 条件付き必須( q
オプションの指定がない場合)
ここで指定した項目(複数項目指定可)で並べ替えられた後、指定した行が選択される。q
オプションを指定しないとき、s=
パラメータは必須。
fr= : 型=str , 任意(default=0)
選択する開始行番号(0以上の整数)
to= : 型=str , 任意(default=0)
選択する終了行番号(0以上の整数)「fr=
の値」 \(\le\) 「to=
の値」でなければならない。
size= : 型=str , 任意(default=1)
選択する行数to=
とsize=
の両方を同時に指定することはできない。
R= : 型=str , 任意(default=)
行番号範囲リスト(複数項目指定可)【必須】*以前のバージョンで使用されていた範囲指定の方法ここで指定した行番号の行が選択される。_(アンダーバー)で範囲指定できる。範囲指定の際にはMIN(開始行以降),MAX(最終行まで)を使用できる。※One Point:事前に目的とする行選択が行いやすいように並べ替えておくとよい。
k= : 型=str , 任意(default=キーブレイク処理しない)
指定列の項目(複数項目指定可)が同じ値の行ごとに、fr=
,to=
,size=
で指定した行番号の行を選択する。x
オプションもしくはnfn
オプション使用時は、項目番号(0〜)で指定可能。
u= : 型=str , 任意(default=出力しない)
不一致データ出力データ指定の条件に一致しない行を出力するデータ。
r= : 型=bool , 任意(default=False)
条件反転fr=,to=(size=)
パラメータで指定した行番号以外の行を選択する。
共通パラメータ¶
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,amount 6A,20,5200 7B,18,4000 8C,15,3500 9D,10,2000 10E,3,800 11''') 12 13with open('dat2.csv','w') as f: 14 f.write( 15'''customer,date,amount 16A,20081201,10 17A,20081207,20 18A,20081213,30 19B,20081002,40 20B,20081209,50 21''')
基本例
この例では、 quantity
と amount
項目値の大きい順(降順)に並べ替えている。
from=
, to=
, size=
を指定しなければ先頭行(0行目)のみ選択する
1nm.mbest(s="quantity%nr,amount%nr", i="dat1.csv", o="rsl1.csv").run() 2### rsl1.csv の内容 3# customer,quantity%0nr,amount%1nr 4# A,20,5200
基本例2
customer
で並べ替えた後、先頭行(0行目)から3行選択する
1nm.mbest(s="customer", fr="0", size="3", i="dat1.csv", o="rsl2.csv").run() 2### rsl2.csv の内容 3# customer%0,quantity,amount 4# A,20,5200 5# B,18,4000 6# C,15,3500
基本例3
並べ替えを行わず(もとのレコード順序を維持したまま)、0行目から1行目まで選択する
1nm.mbest(q=True, fr="0", to="1", i="dat1.csv", o="rsl3.csv").run() 2### rsl3.csv の内容 3# customer,quantity,amount 4# A,20,5200 5# B,18,4000
条件反転
顧客の初回来店日以外の行を選択する。
初回来店日は fvd.csv
というファイルに出力する。
1nm.mbest(s="customer,date", k="customer", r=True, u="fvd.csv", i="dat2.csv", o="rsl4.csv").run() 2### fvd.csv の内容 3# customer,date,amount 4# A,20081201,10 5# B,20081002,40 6### rsl4.csv の内容 7# customer,date,amount 8# A,20081207,20 9# A,20081213,30 10# B,20081209,50
関連メソッド¶
msel 条件式による行選択 :
line()
関数を使えば、同じようなことができる。muniq レコードの単一化 : 単純にキー項目を単一化したいだけならこれ。
mselnum 数値範囲による行選択 : 数値範囲によって行選択ができる。