5.16. mdelnull NULL値行の削除

f= パラメータで指定した項目について、NULL値が含まれる行を削除(撰択)する。

パラメータ

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

入力データを指定する。

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

出力データを指定する。

f= : 型=str , 必須

NULL値の検索対象となる項目名(複数項目指定可)を指定する。

k= : 型=str , 任意(default=キーブレイク処理しない)

削除(撰択)する単位となるキー項目名(複数項目指定可)を指定する。

u= : 型=str , 任意(default=出力しない)

不一致データ出力データを指定する。

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

バッファのサイズ数を指定する。

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

項目間AND条件
f= パラメータで複数項目を指定した場合、その全ての値がNULL値の行を削除(撰択)する。

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

条件反転
削除ではなく選択する。

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

レコード間AND条件
k= パラメータを指定した場合、その全ての行がNULL値の行を削除(撰択)する。

共通パラメータ

i= , o= , bufcount= , 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,1,10
 7A,,20
 8B,1,15
 9B,3,
10C,1,20
11''')
12
13with open('dat2.csv','w') as f:
14  f.write(
15'''customer,quantity,amount
16A,1,10
17A,,
18B,1,15
19B,3,
20C,1,20
21''')

基本例

quantityamount 項目がNULL値の行を削除する。 NULL値の行は oth.csv に出力する。

 1nm.mdelnull(f="quantity,amount", u="oth.csv", i="dat1.csv", o="rsl1.csv").run()
 2### oth.csv の内容
 3# customer,quantity,amount
 4# A,,20
 5# B,3,
 6### rsl1.csv の内容
 7# customer,quantity,amount
 8# A,1,10
 9# B,1,15
10# C,1,20

NULL値の行を選択

r=True を指定することで、削除ではなく選択することになる。

1nm.mdelnull(f="quantity,amount", r=True, i="dat1.csv", o="rsl2.csv").run()
2### rsl2.csv の内容
3# customer,quantity,amount
4# A,,20
5# B,3,

キー項目でのNULL値の行の削除

k= を指定することで、集計キー単位で削除することになる。 以下では customer 項目を単位にして、 quantityamount 項目にNULL値が一つでも含まれていれば削除する。

1nm.mdelnull(k="customer", f="quantity,amount", i="dat1.csv", o="rsl3.csv").run()
2### rsl3.csv の内容
3# customer%0,quantity,amount
4# C,1,20

項目間AND条件の例

quantityamount 項目の両方がNULL値の行を削除する。

1nm.mdelnull(f="quantity,amount", F=True, i="dat2.csv", o="rsl4.csv").run()
2### rsl4.csv の内容
3# customer,quantity,amount
4# A,1,10
5# B,1,15
6# B,3,
7# C,1,20

レコード間AND条件の例

customer 項目を単位にして、 quantity 項目が全てNULL値の行を削除する。

1nm.mdelnull(k="customer", f="quantity", R=True, i="dat1.csv", o="rsl5.csv").run()
2### rsl5.csv の内容
3# customer%0,quantity,amount
4# A,1,10
5# A,,20
6# B,1,15
7# B,3,
8# C,1,20

関連メソッド

  • mnullto NULL値の置換 : NULL値を含む行を削除するのではなく、NULL値を指定の文字列に変換する。