5.8. mchgnum 数値範囲による置換

f= パラメータで指定した項目について、 R= パラメータで指定する 数値範囲条件と v= パラメータで指定する置換文字列により、項目の値を置換する。

パラメータ

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

入力データを指定する。

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

出力データを指定する。

f= : 型=str , 必須

ここで指定した項目(複数項目指定可)の数値を R=v= パラメータで指定した
数値範囲リストおよび置換文字列リストに従って置換する。

R= : 型=str , 必須

置換対象となる数値範囲を指定(複数項目指定可)する( 1.1,2.5 : 1.1以上2.5未満)。
最小値、最大値として MIN,MAX を使うことができる( MIN,2.5 : 2.5未満)。

O= : 型=str , 任意(default=null値)

範囲外文字列
R= パラメータで指定した数値範囲リストのいずれとも合致しない値を
置換するときの文字列(指定がなければNULL値となる)を指定する。

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

範囲外を項目の値として出力
R= パラメータで指定した数値範囲リストのいずれとも
合致しない値は、その項目の値のまま出力する。

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

R= パラメータで指定した数値範囲に対応する置換文字列を指定する。
R= で指定した値の個数より1つ少い個数でなければならない。

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

このオプションにより、指定した項目を置き換えるのではなく、新たに項目が追加される。

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

R= パラメータの範囲を'〜より大きく〜以下'として扱う。
例えば、 1.1_2.5 は「1.1より大きく2.5以下」として扱う。

利用例

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

 1import nysol.mcmd as nm
 2
 3with open('dat1.csv','w') as f:
 4  f.write(
 5'''customer,quantity
 6A,5
 7B,10
 8C,15
 9D,2
10E,50
11''')

基本例

quantity 項目の値が最小以上10未満を low 、 10以上20未満を middle 、20以上最大未満を high という文字列に置換する。

1nm.mchgnum(f="quantity", R="MIN,10,20,MAX", v="low,middle,high", i="dat1.csv", o="rsl1.csv").run()
2### rsl1.csv の内容
3# customer,quantity
4# A,low
5# B,middle
6# C,middle
7# D,low
8# E,high

パラメータ範囲にイコールをつける例

quantity 項目の値が最小より多く10以下を low 、 10より多く20以下を middle 、20より多く最大以下を high という文字列に置換する。

1nm.mchgnum(f="quantity", R="MIN,10,20,MAX", v="low,middle,high", r=True, i="dat1.csv", o="rsl2.csv").run()
2### rsl2.csv の内容
3# customer,quantity
4# A,low
5# B,low
6# C,middle
7# D,low
8# E,high

数値範囲リストに合致しない値を置換

quantity 項目の値が10以上20未満を low 、 20以上30未満を middle 、30以上最大未満を high 、 数量が10より小さい値は out of range という文字列に置換する。

1nm.mchgnum(f="quantity", R="10,20,30,MAX", v="low,middle,high", O="out of range", i="dat1.csv", o="rsl3.csv").run()
2### rsl3.csv の内容
3# customer,quantity
4# A,out of range
5# B,low
6# C,low
7# D,out of range
8# E,high

新たな項目の追加

quantity 項目の値が最小以上10未満を low 、 10以上20未満を middle 、20以上最大未満を high という文字列に置換し evaluate という項目名で出力する。

1nm.mchgnum(f="quantity:evaluate", R="MIN,10,20,MAX", v="low,middle,high", A=True, i="dat1.csv", o="rsl4.csv").run()
2### rsl4.csv の内容
3# customer,quantity,evaluate
4# A,5,low
5# B,10,middle
6# C,15,middle
7# D,2,low
8# E,50,high

範囲外を項目の値として出力

quantity 項目の値が10以上20未満を low 、20以上30未満を middle 、 30以上最大未満を high 、数量が10より小さい値は置換しないでそのまま出力する。

1nm.mchgnum(f="quantity", R="10,20,30,MAX", v="low,middle,high", F=True, i="dat1.csv", o="rsl5.csv").run()
2### rsl5.csv の内容
3# customer,quantity
4# A,5
5# B,low
6# C,low
7# D,2
8# E,high

関連メソッド