5.37. mnumber 連番¶
数字連番もしくはアルファベット連番(A,B,...,Z,AA,AB,...,AZ,BA,BB,...,ZZ,AAA,AAB,...)ををふり、 a=
パラメータで指定した項目名で出力する。
パラメータ¶
i= : 型=str , 任意(default=標準入力)
入力データを指定する。
o= : 型=str , 任意(default=標準出力)
出力データを指定する。
a= : 型=str , 必須
新たに追加される項目の名前を指定する。【但し、-nfn,-nfnoオプション指定時は必要なし】
e= : 型=str , 任意(default=)
同Rankの処理方法同一キー同一ソート項目値への処理方法を指定する。指定しない場合は、デフォルトはe=seq
である。seq:
同Rankの場合は各行に連番を振るが、その順序は不定である。same:
同Rankの場合は同じNoもしくはアルファベットを付け加える。skip:
同Rankの場合は同じNoを振り、次のNoはスキップするようにNoもしくはアルファベット連番を付け加える。(注意)e={same/skip}
を指定する場合は、s=
パラメータを同時に指定しなければならない。
I= : 型=str , 任意(default=)
連番の間隔を指定する。
k= : 型=str , 任意(default=キーブレイク処理しない)
連番もしくは連文字をふる単位となる項目名リスト(複数項目指定可)を指定する。【 集計キーブレイク処理 】(注意)指定する場合は事前にk=
パラメータで指定する連番、もしくは連文字をふる単位となる項目順に並べ替えておく必要がある。
s= : 型=str , 任意(default=)
ここで指定した項目(複数項目指定可)で並べ替えられた後、連番が追加される。B
オプション指定時以外は必須。
S= : 型=str , 任意(default=)
開始No連番の開始Noを指定する。大文字のアルファベットが指定された場合はアルファベット連番となる。ただし、アルファベット連番の場合、間隔(I=
)に負の値は指定できない。
B= : 型=bool , 任意(default=False)
キー毎に連番もしくはアルファベット連番をふる。あるキー内では全行同じNoもしくはアルファベットがふられる。
共通パラメータ¶
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,Val,Sum 6A,29,300 7B,35,250 8C,15,200 9D,23,150 10E,10,100 11''') 12 13with open('dat2.csv','w') as f: 14 f.write( 15'''Date 1620090101 1720090101 1820090102 1920090103 2020090103 21''') 22 23with open('dat3.csv','w') as f: 24 f.write( 25'''Customer,Val,Sum 26A,3,300 27B,1,250 28C,2,250 29D,1,150 30E,1,100 31''') 32 33with open('dat4.csv','w') as f: 34 f.write( 35'''Customer,Val,Sum 36A,1,100 37B,1,150 38C,1,250 39D,2,250 40E,3,300 41''')
数字の連番
Customer項目名順(昇順)に連番を振り「No」という項目名で出力する。
1nm.mnumber(s="Customer", a="No", i="dat1.csv", o="rsl1.csv").run() 2### rsl1.csv の内容 3# Customer%0,Val,Sum,No 4# A,29,300,0 5# B,35,250,1 6# C,15,200,2 7# D,23,150,3 8# E,10,100,4
Date項目順の連番
Date項目順(昇順)に連番をふる。その際、同じDateには同じNoを振り「No」という項目名で出力する。
1nm.mnumber(k="Date", a="No", B=True, i="dat2.csv", o="rsl2.csv").run() 2### rsl2.csv の内容 3# Date%0,No 4# 20090101,0 5# 20090101,0 6# 20090102,1 7# 20090103,2 8# 20090103,2
Sum項目順の連番(同Rankは同じアルファベットをふる)
Sum項目の多い順(降順)にアルファベットのAから順に連文字を振り「Rank」という項目名で出力する。 また、同Rankの場合は同じアルファベット文字を振ることにする。
1nm.mnumber(a="Rank", e="same", s="Sum%nr", S="A", i="dat3.csv", o="rsl3.csv").run() 2### rsl3.csv の内容 3# Customer,Val,Sum%0nr,Rank 4# A,3,300,A 5# B,1,250,B 6# C,2,250,B 7# D,1,150,C 8# E,1,100,D
Sum項目順の連番(同Rankは並び順でNoをふる)
Sum項目の多い順(降順)に連番を振り「Rank」という項目名で出力する。 その際、同Rankの場合は並び順でNoを振ることにする。
1nm.mnumber(a="Rank", e="seq", s="Sum%nr", i="dat3.csv", o="rsl4.csv").run() 2### rsl4.csv の内容 3# Customer,Val,Sum%0nr,Rank 4# A,3,300,0 5# B,1,250,1 6# C,2,250,2 7# D,1,150,3 8# E,1,100,4
Sum項目順の連番(同Rankは同じNoをふる)
Sum項目の多い順(降順)に連番を振り「Rank」という項目名で出力する。 その際、同Rankの場合は同じNoを振ることにする。
1nm.mnumber(a="Rank", e="same", s="Sum%nr", i="dat3.csv", o="rsl5.csv").run() 2### rsl5.csv の内容 3# Customer,Val,Sum%0nr,Rank 4# A,3,300,0 5# B,1,250,1 6# C,2,250,1 7# D,1,150,2 8# E,1,100,3
Sum項目順の連番(同Rankの場合は同じRankNoを振り、次のNoはスキップ)
Sum項目の多い順(降順)に連番を振り「Rank」という項目名で出力する。 その際、同Rankの場合は同じRankNoを振り、次のNoはスキップするようにNoを振ることにする。
1nm.mnumber(a="Rank", e="skip", s="Sum%nr", i="dat3.csv", o="rsl6.csv").run() 2### rsl6.csv の内容 3# Customer,Val,Sum%0nr,Rank 4# A,3,300,0 5# B,1,250,1 6# C,2,250,1 7# D,1,150,3 8# E,1,100,4
10から始まる連番
Sum項目の小さい順(昇順)に10から始まる連番を振り「Score」という項目名で出力する。 その際、同Rankの場合は同じRankNoを振り、次のNoはスキップするようにNoを振ることにする。
1nm.mnumber(a="Score", e="same", s="Sum%n", S="10", i="dat4.csv", o="rsl7.csv").run() 2### rsl7.csv の内容 3# Customer,Val,Sum%0n,Score 4# A,1,100,10 5# B,1,150,11 6# C,1,250,12 7# D,2,250,12 8# E,3,300,13
10から始まる5つ飛びの連番
Sum項目の小さい順番(昇順)に10から始まる5つ飛びの連番を振り「Score」という項目名で出力する。 また、同Rankの場合は同じNoを振ることにする。
1nm.mnumber(a="Score", e="same", s="Sum%n", S="10", I="5", i="dat4.csv", o="rsl8.csv").run() 2### rsl8.csv の内容 3# Customer,Val,Sum%0n,Score 4# A,1,100,10 5# B,1,150,15 6# C,1,250,20 7# D,2,250,20 8# E,3,300,25
関連メソッド¶
mnewnumber 連番データの新規生成 : 新たに連番データを生成する場合に使う。
mbest 指定行の選択 : 行番号による選択であれば、
mnumber
を使わずともこのコマンドで。