5.62. mtrafld クロス表をトランザクション項目に変換

f= で指定した項目値とその値のペアのアイテムを作成し、 それらのアイテムを連結し新しいベクトル項目(トランザクション項目とも呼ぶ)として出力する。

パラメータ

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

入力データを指定する。

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

出力データを指定する。

a= : 型=str , 必須

トランザクション項目名を指定する。

f= : 型=str , 条件付き必須(r オプション指定時必須)

項目名リスト(複数項目指定可)
ここで指定された項目名と値とを連結したアイテムを作成し
トランザクション項目として出力される。
r オプションの指定がある時は
トランザクションデータから抜き出す項目名を指定する。
r オプションが指定されたとき,このパラメータは省略可能である。
省略すると、全ての項目名と値ペアを処理対象とする。
ただし、 f= パラメータを省略すると標準入力(パイプ入力)は利用できない。

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

トランザクション項目のアイテムを区切る文字を指定する(省略時はスペース)。

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

項目名と値ペアとを区切る文字を指定する(省略時は=)。

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

条件反転
トランザクション項目をクロス表に変換する。

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

このオプションが指定されると、アイテムとして「項目名=」は出力しない。

利用例

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

 1import nysol.mcmd as nm
 2
 3with open('dat1.csv','w') as f:
 4  f.write(
 5'''customer,price,quantity
 6A,198,1
 7B,325,2
 8C,200,3
 9D,450,2
10E,100,1
11''')
12
13with open('dat2.csv','w') as f:
14  f.write(
15'''customer,price,quantity
16A,198,1
17B,,2
18C,200,
19D,450,2
20E,,
21''')

基本例

pricequantity 項目を1つの文字列として連結し、 transaction という項目名で出力する。

1nm.mtrafld(a="transaction", f="price,quantity", i="dat1.csv", o="rsl1.csv").run()
2### rsl1.csv の内容
3# customer,transaction
4# A,price=198 quantity=1
5# B,price=325 quantity=2
6# C,price=200 quantity=3
7# D,price=450 quantity=2
8# E,price=100 quantity=1

基本例2

出力された結果を r=True をつけて再実行し元に戻す。

1nm.mtrafld(r=True, a="transaction", f="price,quantity", i="rsl1.csv", o="rsl2.csv").run()
2### rsl2.csv の内容
3# customer,price,quantity
4# A,198,1
5# B,325,2
6# C,200,3
7# D,450,2
8# E,100,1

区切り文字の指定

price と数量 quantity 項目を_(アンダーバー)で区切り1つの文字列として連結し、 項目名とデータは:(コロン)で区切り transaction という項目名で出力する。

1nm.mtrafld(a="transaction", f="price,quantity", delim="_", delim2=":", i="dat1.csv", o="rsl3.csv").run()
2### rsl3.csv の内容
3# customer,transaction
4# A,price:198_quantity:1
5# B,price:325_quantity:2
6# C,price:200_quantity:3
7# D,price:450_quantity:2
8# E,price:100_quantity:1

NULL値を含む場合

1nm.mtrafld(a="transaction", f="price,quantity", i="dat2.csv", o="rsl4.csv").run()
2### rsl4.csv の内容
3# customer,transaction
4# A,price=198 quantity=1
5# B,quantity=2
6# C,price=200
7# D,price=450 quantity=2
8# E,

NULL値を含む場合2

出力された結果を r=True をつけて再実行し元に戻す。

1nm.mtrafld(r=True, a="transaction", f="price,quantity", i="rsl4.csv", o="rsl5.csv").run()
2### rsl5.csv の内容
3# customer,price,quantity
4# A,198,1
5# B,,2
6# C,200,
7# D,450,2
8# E,,

-valOnlyの指定

1nm.mtrafld(valOnly=True, f="price,quantity", a="transaction", i="dat2.csv", o="rsl6.csv").run()
2### rsl6.csv の内容
3# customer,transaction
4# A,198 1
5# B,2
6# C,200
7# D,450 2
8# E,

関連メソッド