コンバータ

コンバータは、表データを別の表データに変換する処理を表します。

Tablelinker では、列名の変更や列の削除、挿入などの操作、 特定の条件を満たす行の選択など、列や行に対する処理を行うものを 「基本コンバータ」、和暦・西暦変換やジオコーディングなど、 外部の知識を利用して表データに情報を追加したり表現を変換する 処理を行うものを「拡張コンバータ」と便宜上分類しています。

基本コンバータを利用するには外部の辞書等は不要ですが、 拡張コンバータを利用するには事前に辞書をダウンロードしたり、 利用時にインターネット接続が必要になります。

基本コンバータ

以下の基本コンバータが利用可能です。

列操作

列の増減や名前の変更を伴うコンバータです。 SQL では ALTER TABLE を必要とする処理に該当します。

class tablelinker.convertors.basics.calc_col.CalcColConvertor
概要

2つの入力列に対して四則演算を実行し、結果を出力列に保存します。

コンバータ名

"calc"

パラメータ
  • "input_col_idx1": 入力列1の列番号または列名 [必須]

  • "input_col_idx2": 入力列2の列番号または列名 [必須]

  • "output_col_name": 出力列名 [必須]

  • "operator": 演算子("+", "-", "*", "/") ["*"]

  • "delete_col": 入力列を削除するか (true/false) [false]

注釈
  • 出力列名が元の表に存在している場合、その列に上書きします。

  • 存在していなかった場合、最後に新しい列が追加されます。

サンプル

表の「人口」列の値を「面積」列の値で割った商を「人口密度」列に 出力します。

  • タスクファイル例

{
    "convertor": "calc",
    "params": {
        "input_col_idx1": "人口",
        "input_col_idx2": "面積",
        "operator": "/",
        "output_col_name": "人口密度",
        "delete_col": false
    }
}
  • コード例

>>> # 「国勢調査(令和2)都道府県・市区町村別の主な結果」
>>> # https://www.e-stat.go.jp/stat-search/files?layout=datalist&cycle=0&toukei=00200521&tstat=000001049104&tclass1=000001049105&tclass2val=0&stat_infid=000032143614
>>> # および「これまでに公表した面積調/令和4年10月1日」(国土地理院)より作成
>>> # https://www.gsi.go.jp/KOKUJYOHO/OLD-MENCHO-title.htm
>>> from tablelinker import Table
>>> table = Table(data=(
...     '都道府県名,人口,面積\n'
...     '北海道 ほっかいどう,"5,224,614","83423.81"\n'
...     '青森県 あおもりけん,"1,237,984","9645.95"\n'
...     '岩手県 いわてけん,"1,210,534","15275.01"\n'
... ))
>>> table = table.convert(
...     convertor="calc",
...     params={
...         "input_col_idx1": "人口",
...         "input_col_idx2": "面積",
...         "operator": "/",
...         "output_col_name": "人口密度",
...         "delete_col": False,
...     },
... )
>>> table.write()
都道府県名,人口,面積,人口密度
北海道 ほっかいどう,"5,224,614",83423.81,62.6273...
青森県 あおもりけん,"1,237,984",9645.95,128.3423...
岩手県 いわてけん,"1,210,534",15275.01,79.2493...
class tablelinker.convertors.basics.concat_col.ConcatColConvertor
概要

2つの入力列の文字列を結合し、結果を出力列に保存します。

コンバータ名

"concat_col"

パラメータ
  • "input_col_idx1": 入力列1の列番号または列名 [必須]

  • "input_col_idx2": 入力列2の列番号または列名 [必須]

  • "output_col_name": 出力列名

  • "output_col_idx": 出力列の列番号または列名

  • "separator": 区切り文字 [""]

注釈
  • output_col_name が省略された場合、 入力列 1, 2 の列名を結合して出力列名とします。

  • output_col_idx が省略された場合、 出力列名が存在する列名ならばその列の直前に出力し、 存在しないならば最後尾に追加します。

サンプル

「姓」列と「名」列を空白で結合し、結果を「姓名」列に 出力します。

  • タスクファイル例

{
    "convertor": "concat_col",
    "params": {
        "input_col_idx1": "姓",
        "input_col_idx2": "名",
        "separator": " ",
        "output_col_name": "姓名"
    }
}
  • コード例

>>> # データはランダム生成
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"姓","名","生年月日","性別"\n'
...     '"生田","直樹","1930年08月11日","男"\n'
...     '"石橋","絵理","1936年01月28日","女"\n'
...     '"菊池","浩二","1985年12月17日","男"\n'
... ))
>>> table = table.convert(
...     convertor="concat_col",
...     params={
...         "input_col_idx1": "姓",
...         "input_col_idx2": "名",
...         "separator": " ",
...         "output_col_name": "姓名",
...         "output_col_idx": "生年月日",
...     },
... )
>>> table.write()
姓,名,姓名,生年月日,性別
生田,直樹,生田 直樹,1930年08月11日,男
石橋,絵理,石橋 絵理,1936年01月28日,女
菊池,浩二,菊池 浩二,1985年12月17日,男
class tablelinker.convertors.basics.concat_col.ConcatColsConvertor
概要

複数の入力列の文字列を結合し、結果を出力列に保存します。

コンバータ名

"concat_cols"

パラメータ
  • "input_col_idxs": 入力列の列番号または列名のリスト [必須]

  • "output_col_name": 出力列名

  • "output_col_idx": 出力列の列番号または列名

  • "separator": 区切り文字 [""]

注釈
  • output_col_name が省略された場合、 入力列の列名を結合して出力列名とします。

  • output_col_idx が省略された場合、 出力列名が存在する列名ならばその列の位置に出力し、 存在しないならば最後尾に追加します。

サンプル

表の「都道府県」「市区町村」「所在地詳細」列を結合し、 結果を「所在地」列に出力します。

  • タスクファイル例

{
    "convertor": "concat_col",
    "params": {
        "input_col_idxs": ["都道府県", "市区町村", "所在地詳細"],
        "output_col_name": "所在地",
        "separator": " "
    }
}
  • コード例

>>> # 「令和3年度全国大学一覧/01国立大学一覧 (Excel:8.7MB)」より作成
>>> # https://www.mext.go.jp/a_menu/koutou/ichiran/mext_01856.html
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"機関名","郵便番号","都道府県","市区町村","所在地詳細"\n'
...     '"北海道大学","060-0808","北海道","札幌市","北区北8条西5"\n'
...     '"北海道教育大学","002-8501","北海道","札幌市","北区あいの里5条3-1-3"\n'
...     '"室蘭工業大学","050-8585","北海道","室蘭市","水元町27-1"\n'
... ))
>>> table = table.convert(
...     convertor="concat_cols",
...     params={
...         "input_col_idxs": ["都道府県","市区町村","所在地詳細"],
...         "output_col_name": "所在地",
...         "separator": "",
...     },
... )
>>> table.write()
機関名,郵便番号,都道府県,市区町村,所在地詳細,所在地
北海道大学,060-0808,北海道,札幌市,北区北8条西5,北海道札幌市北区北8条西5
北海道教育大学,002-8501,北海道,札幌市,北区あいの里5条3-1-3,北海道札幌市北区あいの里5条3-1-3
室蘭工業大学,050-8585,北海道,室蘭市,水元町27-1,北海道室蘭市水元町27-1
class tablelinker.convertors.basics.delete_col.DeleteColConvertor
概要

指定した列を削除します。

コンバータ名

"delete_col"

パラメータ
  • "input_col_idx": 削除する入力列の列番号または列名 [必須]

サンプル

「クレジットカード」列を削除します。

  • タスクファイル例

{
    "convertor": "delete_col",
    "params": {
        "input_col_idx": "クレジットカード"
    }
}
  • コード例

>>> # データはランダム生成
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"氏名","生年月日","性別","クレジットカード"\n'
...     '"小室 友子","1990年06月20日","女","3562635454918233"\n'
...     '"江島 佳洋","1992年10月07日","男","376001629316609"\n'
...     '"三沢 大志","1995年02月13日","男","4173077927458449"\n'
... ))
>>> table = table.convert(
...     convertor="delete_col",
...     params={
...         "input_col_idx": "クレジットカード",
...     },
... )
>>> table.write()
氏名,生年月日,性別
小室 友子,1990年06月20日,女
江島 佳洋,1992年10月07日,男
三沢 大志,1995年02月13日,男
class tablelinker.convertors.basics.delete_col.DeleteColsConvertor
概要

指定した複数の列を削除します。

コンバータ名

"delete_cols"

パラメータ
  • "input_col_idxs": 削除する入力列の列番号または列名のリスト [必須]

サンプル

「生年月日」「クレジットカード」列を削除します。

  • タスクファイル例

{
    "convertor": "delete_cols",
    "params": {
        "input_col_idxs": ["生年月日", "クレジットカード"]
    }
}
  • コード例

>>> # データはランダム生成
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"氏名","生年月日","性別","クレジットカード"\n'
...     '"小室 友子","1990年06月20日","女","3562635454918233"\n'
...     '"江島 佳洋","1992年10月07日","男","376001629316609"\n'
...     '"三沢 大志","1995年02月13日","男","4173077927458449"\n'
... ))
>>> table = table.convert(
...     convertor="delete_cols",
...     params={
...         "input_col_idxs": ["生年月日", "クレジットカード"],
...     },
... )
>>> table.write()
氏名,性別
小室 友子,女
江島 佳洋,男
三沢 大志,男
class tablelinker.convertors.basics.generate_pk.GeneratePkConvertor
概要

指定した列の文字列をシードとして、 ユニークなキー文字列を生成します。

コンバータ名

"generate_pk"

パラメータ(InputOutputConvertor 共通)
  • "input_col_idx": シードとする列の列番号または列名 [必須]

  • "output_col_idx": 結果を出力する列番号または列名のリスト

  • "output_col_name": 結果を出力する列名

  • "overwrite": 既に値がある場合に上書きするかどうか [False]

パラメータ(コンバータ固有)
  • "length": 生成するキー文字列の長さ [6]

  • "skip_if_not_unique": 同じ値の行が存在する場合に スキップするかどうか [False]

  • "error_if_not_unique": 同じ値の行が存在する場合に エラーにするかどうか [True]

注釈(InputOutputConvertor 共通)
  • output_col_name が省略された場合、 input_col_idx 列の列名が出力列名として利用されます。

  • output_col_idx が省略された場合、 出力列名が存在する列名ならばその列の位置に出力し、 存在しないならば最後尾に追加します。

注釈(コンバータ固有)
  • 入力列の値が異なるのに生成されたキーが同じになる場合、 RuntimeError 例外が発生するので length を増やしてください。

サンプル

「クレジットカード」列の値から 6 桁のキーを生成し、 先頭に「PK」列として追加します。

  • タスクファイル例


{
    "convertor": "generate_pk",
    "params": {
        "input_col_idx": "クレジットカード",
        "output_col_name": "PK",
        "output_col_idx": 0,
        "length": 6,
        "error_if_not_unique": false,
        "skip_if_not_unique": true
    }
}
  • コード例

>>> # データはランダム生成
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"氏名","生年月日","性別","クレジットカード"\n'
...     '"小室 友子","1990年06月20日","女","3562635454918233"\n'
...     '"小室 雅代","1963年08月19日","女","3562635454918233"\n'
...     '"江島 佳洋","1992年10月07日","男","376001629316609"\n'
...     '"三沢 大志","1995年02月13日","男","4173077927458449"\n'
... ))
>>> table = table.convert(
...     convertor="generate_pk",
...     params={
...         "input_col_idx": "クレジットカード",
...         "output_col_name": "PK",
...         "output_col_idx": 0,
...         "length": 6,
...         "error_if_not_unique": False,
...         "skip_if_not_unique": True,
...     },
... )
>>> table.write()
PK,氏名,生年月日,性別,クレジットカード
9wUXiv,小室 友子,1990年06月20日,女,3562635454918233
JtFkJ7,江島 佳洋,1992年10月07日,男,376001629316609
KP9RIz,三沢 大志,1995年02月13日,男,4173077927458449
class tablelinker.convertors.basics.insert_col.InsertColConvertor
概要

新しい列を追加します。

コンバータ名

"insert_col"

パラメータ
  • "output_col_idx": 新しい列を追加する列番号または列名 [最後尾]

  • "output_col_name": 追加する列名 [必須]

  • "value": 追加した列にセットする値 [""]

注釈
  • 出力列名が元の表に存在していても同じ名前の列を追加します。

  • 追加する位置を既存の列名で指定した場合、その列の直前に 新しい列を挿入します。

  • 追加する位置を省略した場合、最後尾に追加します。

サンプル

「所在地」列の前に「都道府県名」列を挿入し、その列の すべての値を「東京都」にセットします。

  • タスクファイル例

{
    "convertor": "insert_col",
    "params": {
        "output_col_idx": "所在地",
        "output_col_name": "都道府県名",
        "value": "東京都"
    }
}
  • コード例

>>> # 「東京都災害拠点病院一覧」(東京都福祉局)より作成(令和4年1月1日現在)
>>> # https://www.fukushihoken.metro.tokyo.lg.jp/iryo/kyuukyuu/saigai/kyotenbyouinlist.html
>>> from tablelinker import Table
>>> table = Table(data=(
...    '施設名,所在地,電話番号,病床数\n'
...    '日本大学病院,千代田区神田駿河台1-6,03-3293-1711,320\n'
...    '三井記念病院,千代田区神田和泉町1,03-3862-9111,482\n'
...    '聖路加国際病院,中央区明石町9-1,03-3541-5151,520\n'
...    '東京都済生会中央病院,港区三田1-4-17,03-3451-8211,535\n'
...    '東京慈恵会医科大学附属病院,港区西新橋3-19-18,03-3433-1111,"1,075"\n'
... ))
>>> table = table.convert(
...     convertor="insert_col",
...     params={
...         "output_col_idx": "所在地",
...         "output_col_name": "都道府県名",
...         "value": "東京都",
...     },
... )
>>> table.write()
施設名,都道府県名,所在地,電話番号,病床数
日本大学病院,東京都,千代田区神田駿河台1-6,03-3293-1711,320
三井記念病院,東京都,千代田区神田和泉町1,03-3862-9111,482
...
class tablelinker.convertors.basics.insert_col.InsertColsConvertor
概要

新しい複数の列を追加します。

コンバータ名

"insert_cols"

パラメータ
  • "output_col_idx": 新しい列を追加する列番号または列名 [最後尾]

  • "output_col_names": 追加する列名のリスト [必須]

  • "values": 追加した列にセットする値のリスト [""]

注釈
  • 出力列名が元の表に存在していても同じ名前の列を追加します。

  • 追加する位置を既存の列名で指定した場合、その列の直前に 新しい列を挿入します。

  • 追加する位置を省略した場合、最後尾に追加します。

  • values に単一の値を指定した場合はすべての列にその値をセットします。

  • values にリストを指定する場合、追加する列数と 長さが同じである必要があります。

サンプル

「所在地」列の前に「都道府県名」「市区町村名」列を挿入し、 その列のすべての値を「東京都」「八丈町」にセットします。

  • タスクファイル例

{
    "convertor": "insert_cols",
    "params": {
        "output_col_idx": "所在地",
        "output_col_names": ["都道府県名", "市区町村名"],
        "values": ["東京都", "八丈町"]
    }
}
  • コード例

>>> # 「八丈町営温泉一覧」より作成
>>> # https://catalog.data.metro.tokyo.lg.jp/dataset/t134015d0000000001
>>> from tablelinker import Table
>>> table = Table(data=(
...     '施設名,所在地,緯度,経度,座標系,営業開始時間,営業終了時間\n'
...     '樫立向里温泉「ふれあいの湯」,東京都八丈島八丈町樫立1812?3,33.075843 ,139.790328 ,JGD2011,10:00,22:00\n'
...     '裏見ヶ滝温泉,東京都八丈島八丈町中之郷無番地,33.063743 ,139.816513 ,JGD2011,9:00,21:00\n'
...     'ブルーポート・スパ ザ・BOON,東京都八丈島八丈町中之郷1448-1,33.060855 ,139.816199 ,JGD2011,10:00,21:00\n'
... ))
>>> table = table.convert(
...     convertor="insert_cols",
...     params={
...         "output_col_idx": "所在地",
...         "output_col_names": ["都道府県名", "市区町村名"],
...         "values": ["東京都", "八丈町"],
...     },
... )
>>> table.write()
施設名,都道府県名,市区町村名,所在地,緯度,経度,座標系,営業開始時間,営業終了時間
樫立向里温泉「ふれあいの湯」,東京都,八丈町,東京都八丈島八丈町樫立1812?3,33.075843 ,139.790328 ,JGD2011,10:00,22:00
裏見ヶ滝温泉,東京都,八丈町,東京都八丈島八丈町中之郷無番地,33.063743 ,139.816513 ,JGD2011,9:00,21:00
...
class tablelinker.convertors.basics.mapping_col.MappingColsConvertor
概要

既存の列名と新しい列名のマッピングテーブルを利用して、 既存の表を新しい表に変換します。

コンバータ名

"mapping_cols"

パラメータ
  • "column_map": 列名のマッピングテーブル [必須]

注釈
  • マッピングテーブルの左側(キー)は出力される新しい列名、 右側(値)は既存の表に含まれる列番号または列名です。

  • 既存の列名でマッピングテーブルに含まれないものは削除されます。

  • 新しい列名で対応する列名が null のもの新規に追加される列で、 値は空("")になります。

サンプル

「」(0列目)「人口」「出生数」「死亡数」…「婚姻件数」「離婚件数」のうち、 「」「人口」「婚姻件数」「離婚件数」の列だけを選択し、 「都道府県」「人口」「婚姻件数」「離婚件数」にマップします。

  • タスクファイル例

{
    "convertor": "mapping_cols",
    "params": {
        "column_map": {
            "都道府県": 0,
            "人口": "人口",
            "婚姻件数": "婚姻件数",
            "離婚件数": "離婚件数"
        }
    }
}
  • コード例

>>> # 「人口動態調査(2020年)上巻_3-3-1_都道府県(特別区-指定都市再掲)
>>> # 別にみた人口動態総覧」(厚生労働省)より作成
>>> # https://www.data.go.jp/data/dataset/mhlw_20211015_0019
>>> from tablelinker import Table
>>> table = Table(data=(
...     ',人口,出生数,死亡数,(再掲)乳児死亡数,(再掲)新生児死亡数,自 然増減数,死産数総数,死産数自然死産,死産数人工死産,周産期死亡数総数,周産期死亡数22週以後の死産数,周産期死亡数早期新生児死亡数,婚姻件数,離婚件数\n'
...     '全 国,123398962,840835,1372755,1512,704,-531920,17278,8188,9090,2664,2112,552,525507,193253\n'
...     '01 北海道,5188441,29523,65078,59,25,-35555,728,304,424,92,75,17,20904,9070\n'
...     '02 青森県,1232227,6837,17905,18,15,-11068,145,87,58,32,17,15,4032,1915\n'
...     '03 岩手県,1203203,6718,17204,8,3,-10486,150,90,60,21,19,2,3918,1679\n'
...     '04 宮城県,2280203,14480,24632,27,15,-10152,311,141,170,56,41,15,8921,3553\n'
...     '05 秋田県,955659,4499,15379,9,4,-10880,98,63,35,18,15,3,2686,1213\n'
... ))
>>> table = table.convert(
...     convertor="mapping_cols",
...     params={
...         "column_map": {
...             "都道府県": 0,
...             "人口": "人口",
...             "婚姻件数": "婚姻件数",
...             "離婚件数": "離婚件数",
...         },
...     },
... )
>>> table.write()
都道府県,人口,婚姻件数,離婚件数
全 国,123398962,525507,193253
...
class tablelinker.convertors.basics.move_col.MoveColConvertor
概要

列の位置を移動します。

コンバータ名

"move_col"

パラメータ
  • "input_col_idx": 移動する列の列番号または列名 [必須]

  • "output_col_idx": 移動先の列番号または列名 [最後尾]

注釈
  • 移動先の位置を列名で指定した場合、その列の直前に挿入します。

  • 移動する位置を省略した場合、最後尾に追加します。

サンプル

「経度」列を「緯度」列の前に移動します。

  • タスクファイル例

{
    "convertor": "move_col",
    "params": {
        "input_col_idx": "経度",
        "output_col_idx": "緯度"
    }
}
  • コード例

>>> # 「八丈町営温泉一覧」より作成
>>> # https://catalog.data.metro.tokyo.lg.jp/dataset/t134015d0000000001
>>> from tablelinker import Table
>>> table = Table(data=(
...     '施設名,所在地,緯度,経度,座標系,営業開始時間,営業終了時間\n'
...     '樫立向里温泉「ふれあいの湯」,東京都八丈島八丈町樫立1812-3,33.075843 ,139.790328 ,JGD2011,10:00,22:00\n'
...     '裏見ヶ滝温泉,東京都八丈島八丈町中之郷無番地,33.063743 ,139.816513 ,JGD2011,9:00,21:00\n'
...     'ブルーポート・スパ ザ・BOON,東京都八丈島八丈町中之郷1448-1,33.060855 ,139.816199 ,JGD2011,10:00,21:00\n'
... ))
>>> table = table.convert(
...     convertor="move_col",
...     params={
...         "input_col_idx": "経度",
...         "output_col_idx": "緯度",
...     },
... )
>>> table.write()
施設名,所在地,経度,緯度,座標系,営業開始時間,営業終了時間
樫立向里温泉「ふれあいの湯」,東京都八丈島八丈町樫立1812-3,139.790328 ,33.075843 ,JGD2011,10:00,22:00
裏見ヶ滝温泉,東京都八丈島八丈町中之郷無番地,139.816513 ,33.063743 ,JGD2011,9:00,21:00
ブルーポート・スパ ザ・BOON,東京都八丈島八丈町中之郷1448-1,139.816199 ,33.060855 ,JGD2011,10:00,21:00
class tablelinker.convertors.basics.rename_col.RenameColConvertor
概要

列名を変更します。

コンバータ名

"rename_col"

パラメータ
  • "input_col_idx": 変更する列の列番号または列名 [必須]

  • "output_col_name": 新しい列名 [必須]

注釈
  • 新しい列名が元の表に存在していても同じ名前の列を追加します。

サンプル

先頭列(0列目)の名称を「地域」に変更します。

  • タスクファイル例

{
    "convertor": "rename_col",
    "params": {
        "input_col_idx": 0,
        "output_col_name": "地域"
    }
}
  • コード例

>>> # 「人口動態調査(2020年)上巻_3-3-1_都道府県(特別区-指定都市再掲)
>>> # 別にみた人口動態総覧」(厚生労働省)より作成
>>> # https://www.data.go.jp/data/dataset/mhlw_20211015_0019
>>> from tablelinker import Table
>>> table = Table(data=(
...     ',人口,出生数,死亡数\n'
...     '全 国,123398962,840835,1372755\n'
...     '01 北海道,5188441,29523,65078\n'
...     '02 青森県,1232227,6837,17905\n'
...     '03 岩手県,1203203,6718,17204\n'
...     '04 宮城県,2280203,14480,24632\n'
...     '05 秋田県,955659,4499,15379\n'
... ))
>>> table = table.convert(
...     convertor="rename_col",
...     params={
...         "input_col_idx": 0,
...         "output_col_name": "地域",
...     },
... )
>>> table.write()
地域,人口,出生数,死亡数
全 国,123398962,840835,1372755
01 北海道,5188441,29523,65078
...
class tablelinker.convertors.basics.rename_col.RenameColsConvertor
概要

すべての列名を一括変更します。

コンバータ名

"rename_cols"

パラメータ
  • "column_list": 新しい列名のリスト [必須]

注釈
  • column_list の列数が既存の列数と等しくないとエラーになります。

サンプル

列名を一括変換します。

  • タスクファイル例

{
    "convertor": "rename_cols",
    "params": {
        "column_list": [
            "Area",
            "Population",
            "Births",
            "Deaths"
        ]
    }
}
  • コード例

>>> # 「人口動態調査(2020年)上巻_3-3-1_都道府県(特別区-指定都市再掲)
>>> # 別にみた人口動態総覧」(厚生労働省)より作成
>>> # https://www.data.go.jp/data/dataset/mhlw_20211015_0019
>>> from tablelinker import Table
>>> table = Table(data=(
...     ',人口,出生数,死亡数\n'
...     '全 国,123398962,840835,1372755\n'
...     '01 北海道,5188441,29523,65078\n'
...     '02 青森県,1232227,6837,17905\n'
...     '03 岩手県,1203203,6718,17204\n'
...     '04 宮城県,2280203,14480,24632\n'
...     '05 秋田県,955659,4499,15379\n'
... ))
>>> table = table.convert(
...     convertor="rename_cols",
...     params={
...         "column_list": [
...             "Area",
...             "Population",
...             "Births",
...             "Deaths",
...         ],
...     },
... )
>>> table.write()
Area,Population,Births,Deaths
全 国,123398962,840835,1372755
01 北海道,5188441,29523,65078
...
class tablelinker.convertors.basics.reorder_col.ReorderColsConvertor
概要

指定した順番に列を並べ替えます。

コンバータ名

"reorder_cols"

パラメータ
  • "column_list": 並び替えた列番号または列名のリスト [必須]

注釈
  • column_list に指定した列が存在しない場合は ValueError を送出します。

  • column_list に指定されなかった列は削除されます。

サンプル

列を選択して並び替えます。

  • タスクファイル例

{
    "convertor": "reorder_cols",
    "params": {
        "column_list": [
            "施設名",
            "所在地",
            "経度",
            "緯度"
        ]
    }
}
  • コード例

>>> # 「八丈町営温泉一覧」より作成
>>> # https://catalog.data.metro.tokyo.lg.jp/dataset/t134015d0000000001
>>> from tablelinker import Table
>>> table = Table(data=(
...     '施設名,所在地,緯度,経度,座標系,営業開始時間,営業終了時間\n'
...     '樫立向里温泉「ふれあいの湯」,東京都八丈島八丈町樫立1812?3,33.075843 ,139.790328 ,JGD2011,10:00,22:00\n'
...     '裏見ヶ滝温泉,東京都八丈島八丈町中之郷無番地,33.063743 ,139.816513 ,JGD2011,9:00,21:00\n'
...     'ブルーポート・スパ ザ・BOON,東京都八丈島八丈町中之郷1448-1,33.060855 ,139.816199 ,JGD2011,10:00,21:00\n'
... ))
>>> table = table.convert(
...     convertor="reorder_cols",
...     params={
...         "column_list": ["施設名", "所在地", "経度", "緯度"],
...     },
... )
>>> table.write()
施設名,所在地,経度,緯度
樫立向里温泉「ふれあいの湯」,東京都八丈島八丈町樫立1812?3,139.790328 ,33.075843
裏見ヶ滝温泉,東京都八丈島八丈町中之郷無番地,139.816513 ,33.063743
...
class tablelinker.convertors.basics.split_col.SplitColConvertor
概要

指定した列を区切り文字で複数列に分割します。

コンバータ名

"split_col"

パラメータ
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "output_col_names": 分割した結果を出力する列名のリスト [必須]

  • "output_col_idx": 出力列の直後にくる列名、または列番号 [最後尾]

  • "separator": 区切り文字(正規表現) [","]

注釈
  • 分割した列の数が output_col_names よりも少ない場合は 足りない列の値が "" になります。

  • 分割した列の数が output_col_names よりも多い場合は 最後の列に残りのすべての文字列が出力されます。

サンプル

「姓名」列を空白で区切り、「姓」列と「名」列に分割し、 「生年月日」列の前に出力します。

  • タスクファイル例

{
    "convertor": "split_col",
    "params": {
        "input_col_idx": "姓名",
        "output_col_names": ["姓", "名"],
        "output_col_idx": "生年月日",
        "separator": " "
    }
}
  • コード例

>>> # データはランダム生成
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"姓名","生年月日","性別"\n'
...     '"生田 直樹","1930年08月11日","男"\n'
...     '"石橋 絵理","1936年01月28日","女"\n'
...     '"菊池 浩二","1985年12月17日","男"\n'
... ))
>>> table = table.convert(
...     convertor="split_col",
...     params={
...         "input_col_idx": "姓名",
...         "output_col_names": ["姓", "名"],
...         "output_col_idx": "生年月日",
...         "separator": " ",
...     },
... )
>>> table.write()
姓名,姓,名,生年月日,性別
生田 直樹,生田,直樹,1930年08月11日,男
石橋 絵理,石橋,絵理,1936年01月28日,女
菊池 浩二,菊池,浩二,1985年12月17日,男

行操作

行の増減を伴うコンバータです。 SQL では SELECT, INSERT, DELETE を必要とする処理に該当します。

class tablelinker.convertors.basics.concat_title.ConcatTitleConvertor
概要

タイトル行が複数行に分割されている場合に結合して 列見出しに設定します。列見出し中の改行は削除します。 タイトル行以降のデータには影響しません。

コンバータ名

"concat_title"

パラメータ
  • "title_from": タイトル行の開始行番号 [0]

  • "title_lines": タイトル行として利用する行数

  • "data_from": データ行の先頭行の行番号または含む文字列

  • "empty_value": 空欄の場合の文字列: ""

  • "separator": 区切り文字 ["/"]

  • "hierarchical_heading": 階層型見出しかどうか [False]

注釈
  • title_linesdata_from はどちらかを指定してください。 両方指定すると title_lines を優先します。

  • empty_value に "" を指定すると、空欄の行は無視されます。

  • hierarchical_heading に True を指定すると、上の列が 空欄の場合にその左側の値を上位見出しとして利用します。

    eStat の表など、1行目に大項目、2行目に小項目が記載されている場合に このオプションを指定してください。

サンプル

国の集計表によく見られる、1行目に大項目、2行目と3行目に 小項目が分割して記載されているタイトルを、 hierarchical_heading を True にして階層見出しとして結合します。 data_from で"全 国" を含む行からデータ行と指定することで、 その前の行までをタイトル行と判断します。

  • タスクファイル例

{
    "convertor": "concat_title",
    "params": {
        "data_from": "全 国",
        "separator": "",
        "hierarchical_heading": true
    }
}
  • コード例

>>> # 「人口動態調査(2020年)上巻_3-3-1_都道府県(特別区-指定都市再掲)
>>> # 別にみた人口動態総覧」(厚生労働省)より作成
>>> # https://www.data.go.jp/data/dataset/mhlw_20211015_0019
>>> from tablelinker import Table
>>> table = Table(data=(
...     ',人口,出生数,死亡数,(再掲),,自 然,死産数,,,周産期死亡数,,,婚姻件数,離婚件数\n'
...     ',,,,乳児死亡数,新生児,増減数,総数,自然死産,人工死産,総数,22週以後,早期新生児,,\n'
...     ',,,,,死亡数,,,,,,の死産数,死亡数,,\n'
...     '全 国,123398962,840835,1372755,1512,704,-531920,17278,8188,9090,2664,2112,552,525507,193253\n'
... ))
>>> table = table.convert(
...     convertor="concat_title",
...     params={
...         "data_from": "全 国",
...         "separator": "",
...         "hierarchical_heading": True,
...     },
... )
>>> table.write()
,人口,出生数,死亡数,(再掲)乳児死亡数,(再掲)新生児死亡数,自 然増減数,死産数総数,死産数自然死産,死産数人工死産,周産期死亡数総数,周産期死亡数22週以後の死産数,周産期死亡数早期新生児死亡数,婚姻件数,離婚件数
全 国,123398962,840835,1372755,1512,704,-531920,17278,8188,9090,2664,2112,552,525507,193253
class tablelinker.convertors.basics.delete_row.StringMatchDeleteRowConvertor
概要

指定した列が、指定した文字列と一致する行を削除します。

コンバータ名

"delete_row_match"

パラメータ
  • "input_col_idx": 検索対象列の列番号または列名 [必須]

  • "query": 文字列 [必須]

サンプル

「性別」列が「女」の行を削除します。

  • タスクファイル例

{
    "convertor": "delete_row_match",
    "params": {
        "input_col_idx": "性別",
        "query": "女"
    }
}
  • コード例

>>> # データはランダム生成
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"氏名","生年月日","性別","クレジットカード"\n'
...     '"小室 友子","1990年06月20日","女","3562635454918233"\n'
...     '"江島 佳洋","1992年10月07日","男","376001629316609"\n'
...     '"三沢 大志","1995年02月13日","男","4173077927458449"\n'
... ))
>>> table = table.convert(
...     convertor="delete_row_match",
...     params={
...         "input_col_idx": "性別",
...         "query": "女",
...     },
... )
>>> table.write()
氏名,生年月日,性別,クレジットカード
江島 佳洋,1992年10月07日,男,376001629316609
三沢 大志,1995年02月13日,男,4173077927458449
class tablelinker.convertors.basics.delete_row.StringContainDeleteRowConvertor
概要

指定した列に、指定した文字列を含む行を削除します。

コンバータ名

"delete_row_contains"

パラメータ
  • "input_col_idx": 検索対象列の列番号または列名 [必須]

  • "query": 文字列 [必須]

サンプル

「生年月日」列に「10月」を含む行を削除します。

  • タスクファイル例

{
    "convertor": "delete_row_contains",
    "params": {
        "input_col_idx": "生年月日",
        "query": "10月"
    }
}
  • コード例

>>> # データはランダム生成
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"氏名","生年月日","性別","クレジットカード"\n'
...     '"小室 友子","1990年06月20日","女","3562635454918233"\n'
...     '"江島 佳洋","1992年10月07日","男","376001629316609"\n'
...     '"三沢 大志","1995年02月13日","男","4173077927458449"\n'
... ))
>>> table = table.convert(
...     convertor="delete_row_contains",
...     params={
...         "input_col_idx": "生年月日",
...         "query": "10月",
...     },
... )
>>> table.write()
氏名,生年月日,性別,クレジットカード
小室 友子,1990年06月20日,女,3562635454918233
三沢 大志,1995年02月13日,男,4173077927458449
class tablelinker.convertors.basics.delete_row.PatternMatchDeleteRowConvertor
概要

指定した列が指定した正規表現と一致する行を削除します。 正規表現は列の先頭から一致(match)する必要があります。

コンバータ名

"delete_pattern_match"

パラメータ
  • "input_col_idx": 検索対象列の列番号または列名 [必須]

  • "query": 正規表現 [必須]

サンプル

「生年月日」が偶数の行を削除します。

  • タスクファイル例

{
    "convertor": "delete_row_pattern",
    "params": {
        "input_col_idx": "生年月日",
        "query": ".*[02468]日"
    }
}
  • コード例

>>> # データはランダム生成
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"氏名","生年月日","性別","クレジットカード"\n'
...     '"小室 友子","1990年06月20日","女","3562635454918233"\n'
...     '"江島 佳洋","1992年10月07日","男","376001629316609"\n'
...     '"三沢 大志","1995年02月13日","男","4173077927458449"\n'
... ))
>>> table = table.convert(
...     convertor="delete_row_pattern",
...     params={
...         "input_col_idx": "生年月日",
...         "query": r".*[02468]日",
...     },
... )
>>> table.write()
氏名,生年月日,性別,クレジットカード
江島 佳洋,1992年10月07日,男,376001629316609
三沢 大志,1995年02月13日,男,4173077927458449
class tablelinker.convertors.basics.split_col.SplitRowConvertor
概要

指定した列を区切り文字で複数行に分割します。

コンバータ名

"split_row"

パラメータ
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "separator": 区切り文字(正規表現) [","]

注釈
  • 分割前の行は削除されます。

  • 区切り文字が末尾の場合、対象列が空欄の行も出力されます。

サンプル

「診療科目」列を「;」で区切り、複数行に分割します。

  • タスクファイル例

{
    "convertor": "split_row",
    "params": {
        "input_col_idx": "診療科目",
        "separator": ";"
    }
}
  • コード例

>>> #「札幌市内の医療機関一覧」より作成
>>> # https://ckan.pf-sapporo.jp/dataset/sapporo_hospital
>>> from tablelinker import Table
>>> table = Table(data=(
...     '名称,診療科目\n'
...     '特定医療法人平成会平成会病院,外;リハ;放;形;麻;消内;呼内\n'
...     '時計台記念病院,内;循内;消内;糖尿病内科;整;リハ;形;婦;脳外;眼;精;麻;放;リウ;外;緩和ケア内科;血管外科;腎臓内科;泌\n'
...     'JR札幌病院,内;精;小;外;整;皮;泌;肛門外科;産婦;眼;耳;放;歯外;麻;リウ;呼内;呼吸器外科;循内;血管外科;消内;腎臓内科;乳腺外科;病理診断科;糖尿病内科\n'
... ))
>>> table = table.convert(
...     convertor="split_row",
...     params={
...         "input_col_idx": "診療科目",
...         "separator": ";",
...     },
... )
>>> table.write()
名称,診療科目
特定医療法人平成会平成会病院,外
特定医療法人平成会平成会病院,リハ
特定医療法人平成会平成会病院,放
特定医療法人平成会平成会病院,形
特定医療法人平成会平成会病院,麻
特定医療法人平成会平成会病院,消内
特定医療法人平成会平成会病院,呼内
時計台記念病院,内
時計台記念病院,循内
時計台記念病院,消内
時計台記念病院,糖尿病内科
時計台記念病院,整
時計台記念病院,リハ
時計台記念病院,形
時計台記念病院,婦
時計台記念病院,脳外
時計台記念病院,眼
時計台記念病院,精
時計台記念病院,麻
時計台記念病院,放
時計台記念病院,リウ
時計台記念病院,外
時計台記念病院,緩和ケア内科
時計台記念病院,血管外科
時計台記念病院,腎臓内科
時計台記念病院,泌
JR札幌病院,内
JR札幌病院,精
JR札幌病院,小
JR札幌病院,外
JR札幌病院,整
JR札幌病院,皮
JR札幌病院,泌
JR札幌病院,肛門外科
JR札幌病院,産婦
JR札幌病院,眼
JR札幌病院,耳
JR札幌病院,放
JR札幌病院,歯外
JR札幌病院,麻
JR札幌病院,リウ
JR札幌病院,呼内
JR札幌病院,呼吸器外科
JR札幌病院,循内
JR札幌病院,血管外科
JR札幌病院,消内
JR札幌病院,腎臓内科
JR札幌病院,乳腺外科
JR札幌病院,病理診断科
JR札幌病院,糖尿病内科
class tablelinker.convertors.basics.select_row.StringMatchSelectRowConvertor
概要

指定した列が、指定した文字列と一致する行を選択します。

コンバータ名

"select_row_match"

パラメータ
  • "input_col_idx": 検索対象列の列番号または列名 [必須]

  • "query": 文字列 [必須]

サンプル

「性別」列が「女」の行を選択します。

  • タスクファイル例

{
    "convertor": "select_row_match",
    "params": {
        "input_col_idx": "性別",
        "query": "女"
    }
}
  • コード例

>>> # データはランダム生成
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"氏名","生年月日","性別","クレジットカード"\n'
...     '"小室 友子","1990年06月20日","女","3562635454918233"\n'
...     '"江島 佳洋","1992年10月07日","男","376001629316609"\n'
...     '"三沢 大志","1995年02月13日","男","4173077927458449"\n'
... ))
>>> table = table.convert(
...     convertor="select_row_match",
...     params={
...         "input_col_idx": "性別",
...         "query": "女",
...     },
... )
>>> table.write()
氏名,生年月日,性別,クレジットカード
小室 友子,1990年06月20日,女,3562635454918233
class tablelinker.convertors.basics.select_row.StringContainSelectRowConvertor
概要

指定した列に、指定した文字列を含む行を選択します。

コンバータ名

"select_row_contains"

パラメータ
  • "input_col_idx": 検索対象列の列番号または列名 [必須]

  • "query": 文字列 [必須]

サンプル

「生年月日」列に「10月」を含む行を選択します。

  • タスクファイル例

{
    "convertor": "select_row_contains",
    "params": {
        "input_col_idx": "生年月日",
        "query": "10月"
    }
}
  • コード例

>>> # データはランダム生成
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"氏名","生年月日","性別","クレジットカード"\n'
...     '"小室 友子","1990年06月20日","女","3562635454918233"\n'
...     '"江島 佳洋","1992年10月07日","男","376001629316609"\n'
...     '"三沢 大志","1995年02月13日","男","4173077927458449"\n'
... ))
>>> table = table.convert(
...     convertor="select_row_contains",
...     params={
...         "input_col_idx": "生年月日",
...         "query": "10月",
...     },
... )
>>> table.write()
氏名,生年月日,性別,クレジットカード
江島 佳洋,1992年10月07日,男,376001629316609
class tablelinker.convertors.basics.select_row.PatternMatchSelectRowConvertor
概要

指定した列が指定した正規表現と一致する行を選択します。 正規表現は列の先頭から一致(match)する必要があります。

コンバータ名

"select_row_pattern"

パラメータ
  • "input_col_idx": 検索対象列の列番号または列名 [必須]

  • "query": 正規表現 [必須]

サンプル

「生年月日」が偶数の行を選択します。

  • タスクファイル例

{
    "convertor": "select_row_pattern",
    "params": {
        "input_col_idx": "生年月日",
        "query": ".*[02468]日"
    }
}
  • コード例

>>> # データはランダム生成
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"氏名","生年月日","性別","クレジットカード"\n'
...     '"小室 友子","1990年06月20日","女","3562635454918233"\n'
...     '"江島 佳洋","1992年10月07日","男","376001629316609"\n'
...     '"三沢 大志","1995年02月13日","男","4173077927458449"\n'
... ))
>>> table = table.convert(
...     convertor="select_row_pattern",
...     params={
...         "input_col_idx": "生年月日",
...         "query": r".*[02468]日",
...     },
... )
>>> table.write()
氏名,生年月日,性別,クレジットカード
小室 友子,1990年06月20日,女,3562635454918233

値の操作

値の変更を行うコンバータです。 SQL では UPDATE を必要とする処理に該当します。

class tablelinker.convertors.basics.round.RoundConvertor
概要

指定した列の数値を丸めます。

コンバータ名

"round"

パラメータ(InputOutputConvertor 共通)
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "output_col_idx": 分割した結果を出力する列番号または 列名のリスト

  • "output_col_name": 結果を出力する列名

  • "overwrite": 既に値がある場合に上書きするかどうか [True]

パラメータ(コンバータ固有)
  • "ndigits": 小数部の桁数。0を指定すると整数を返します。 [0]

注釈(InputOutputConvertor 共通)
  • output_col_name が省略された場合、 input_col_idx 列の列名が出力列名として利用されます。

  • output_col_idx が省略された場合、 出力列名が存在する列名ならばその列の位置に出力し、 存在しないならば最後尾に追加します。

注釈
  • 丸め処理は列名には適用されません。

  • 数値と解釈できない行には適用されません。

サンプル

「人口密度」列を小数点以下3桁で丸めます。

  • タスクファイル例

{
    "convertor": "round",
    "params": {
        "input_col_idx": "人口密度",
        "ndigits": 3,
        "overwrite": true
    }
}
  • コード例

>>> # 「国勢調査(令和2)都道府県・市区町村別の主な結果」
>>> # https://www.e-stat.go.jp/stat-search/files?layout=datalist&cycle=0&toukei=00200521&tstat=000001049104&tclass1=000001049105&tclass2val=0&stat_infid=000032143614
>>> # および「これまでに公表した面積調/令和4年10月1日」(国土地理院)より作成
>>> # https://www.gsi.go.jp/KOKUJYOHO/OLD-MENCHO-title.htm
>>> from tablelinker import Table
>>> table = Table(data=(
...     '都道府県名,人口,面積,人口密度\n'
...     '北海道 ほっかいどう,"5,224,614",83423.81,62.627372209444765\n'
...     '青森県 あおもりけん,"1,237,984",9645.95,128.34236130189353\n'
...     '岩手県 いわてけん,"1,210,534",15275.01,79.2493098204191\n'
... ))
>>> table = table.convert(
...     convertor="round",
...     params={
...         "input_col_idx": "人口密度",
...         "ndigits": 3,
...         "overwrite": True,
...     },
... )
>>> table.write()
都道府県名,人口,面積,人口密度
北海道 ほっかいどう,"5,224,614",83423.81,62.627
青森県 あおもりけん,"1,237,984",9645.95,128.342
岩手県 いわてけん,"1,210,534",15275.01,79.249
class tablelinker.convertors.basics.truncate.TruncateConvertor
概要

指定した列を指定文字数まで切り詰めます。

コンバータ名

"truncate"

パラメータ(InputOutputConvertor 共通)
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "output_col_idx": 分割した結果を出力する列番号または 列名のリスト

  • "output_col_name": 結果を出力する列名

  • "overwrite": 既に値がある場合に上書きするかどうか [True]

パラメータ(コンバータ固有)
  • "length": 最大文字数 [10]

  • "ellipsis": 切り詰めた場合に追加される記号 ["…"]

注釈(InputOutputConvertor 共通)
  • output_col_name が省略された場合、 input_col_idx 列の列名が出力列名として利用されます。

  • output_col_idx が省略された場合、 出力列名が存在する列名ならばその列の位置に出力し、 存在しないならば最後尾に追加します。

注釈
  • 切り詰め処理は列名には適用されません。

  • もともとの文字数が length 以下の場合は ellipsis は追加されません。

サンプル

「説明」列を 40 文字で切り詰めます。

  • タスクファイル例

{
    "convertor": "truncate",
    "params": {
        "input_col_idx": "説明",
        "length": 20,
        "ellipsis": "...",
        "overwrite": true
    }
}
  • コード例

>>> # 「八丈島の主な観光スポット一覧」より作成
>>> # https://catalog.data.metro.tokyo.lg.jp/dataset/t134015d0000000002
>>> from tablelinker import Table
>>> table = Table(data=(
...     '観光スポット名称,説明\n'
...     'ホタル水路,八丈島は伊豆諸島で唯一、水田耕作がなされた島で鴨川に沿って水田が残っています。ホタル水路は、鴨川の砂防とともに平成元年につくられたもので、毎年6月から7月にかけてホタルの光が美しく幻想的です。\n'
...     '登龍峠展望,「ノボリュウトウゲ」または「ノボリョウトウゲ」といい、この道を下方から望むとあたかも龍が昇天するように見えるので、この名が付けられました。峠道の頂上近くの展望台は、八丈島で一、二を争う景勝地として名高く、新東京百景の一つにも選ばれました。眼前に八丈富士と神止山、八丈小島を、眼下には底土港や神湊港、三根市街を一望できます。\n'
...     '八丈富士,八丈島の北西部を占める山で、東の三原山に対して『西山』と呼ばれます。伊豆諸島の中では最も高い標高854.3メートル。1605年の噴火後、活動を停止している火山で火口は直径400メートル深さ50メートルで、 さらに火口底には中央火口丘がある二重式火山です。裾野が大きくのびた優雅な姿は、八丈島を代表する美しさのひとつです。\n'
... ))
>>> table = table.convert(
...     convertor="truncate",
...     params={
...         "input_col_idx": "説明",
...         "length": 20,
...         "ellipsis": "...",
...         "overwrite": True,
...     },
... )
>>> table.write()
観光スポット名称,説明
ホタル水路,八丈島は伊豆諸島で唯一、水田耕作がなされ...
登龍峠展望,「ノボリュウトウゲ」または「ノボリョウト...
八丈富士,八丈島の北西部を占める山で、東の三原山に...
class tablelinker.convertors.basics.update_col.UpdateColConvertor
概要

指定した列の値を新しい文字列に置き換えます。

コンバータ名

"update_col"

パラメータ
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "new": 置き換える文字列 [必須]

サンプル

「性別」列を「-」に置き換えます。

  • タスクファイル例

{
    "convertor": "update_col",
    "params": {
        "input_col_idx": "性別",
        "new": "-"
    }
}
  • コード例

>>> # データはランダム生成
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"氏名","生年月日","性別","クレジットカード"\n'
...     '"小室 友子","1990年06月20日","女","3562635454918233"\n'
...     '"江島 佳洋","1992年10月07日","男","376001629316609"\n'
...     '"三沢 大志","1995年02月13日","男","4173077927458449"\n'
... ))
>>> table = table.convert(
...     convertor="update_col",
...     params={
...         "input_col_idx": "性別",
...         "new": "-",
...     },
... )
>>> table.write()
氏名,生年月日,性別,クレジットカード
小室 友子,1990年06月20日,-,3562635454918233
江島 佳洋,1992年10月07日,-,376001629316609
三沢 大志,1995年02月13日,-,4173077927458449
class tablelinker.convertors.basics.update_col.StringMatchUpdateColConvertor
概要

指定した列の値が指定した文字列と完全に一致する場合、 新しい文字列に置き換えます。部分一致は置き換えません。

コンバータ名

"update_col_match"

パラメータ
  • "input_col_idx": 検索対象列の列番号または列名 [必須]

  • "query": 検索文字列 [必須]

  • "new": 置き換える文字列 [必須]

サンプル

「性別」列が「女」の場合、「F」に置き換えます。

  • タスクファイル例

{
    "convertor": "update_col_match",
    "params": {
        "input_col_idx": "性別",
        "query": "女",
        "new": "F"
    }
}
  • コード例

>>> # データはランダム生成
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"氏名","生年月日","性別","クレジットカード"\n'
...     '"小室 友子","1990年06月20日","女","3562635454918233"\n'
...     '"江島 佳洋","1992年10月07日","男","376001629316609"\n'
...     '"三沢 大志","1995年02月13日","男","4173077927458449"\n'
... ))
>>> table = table.convert(
...     convertor="update_col_match",
...     params={
...         "input_col_idx": "性別",
...         "query": "女",
...         "new": "F",
...     },
... )
>>> table.write()
氏名,生年月日,性別,クレジットカード
小室 友子,1990年06月20日,F,3562635454918233
江島 佳洋,1992年10月07日,男,376001629316609
三沢 大志,1995年02月13日,男,4173077927458449
class tablelinker.convertors.basics.update_col.StringContainUpdateColConvertor
概要

指定した列の値が指定した文字列を含む場合、 その部分を新しい文字列に置き換えます。

コンバータ名

"update_col_contains"

パラメータ
  • "input_col_idx": 検索対象列の列番号または列名 [必須]

  • "query": 検索文字列 [必須]

  • "new": 置き換える文字列 [必須]

サンプル

先頭列に「 」(全角空白)を含む場合、「」に置き換えます(削除)。

  • タスクファイル例

{
    "convertor": "update_col_contains",
    "params": {
        "input_col_idx": 0,
        "query": " ",
        "new": ""
    }
}
  • コード例

>>> # 「人口動態調査(2020年)上巻_3-3-1_都道府県(特別区-指定都市再掲)
>>> # 別にみた人口動態総覧」(厚生労働省)より作成
>>> # https://www.data.go.jp/data/dataset/mhlw_20211015_0019
>>> from tablelinker import Table
>>> table = Table(data=(
...     ',人口,出生数,死亡数\n'
...     '全 国,123398962,840835,1372755\n'
...     '01 北海道,5188441,29523,65078\n'
...     '02 青森県,1232227,6837,17905\n'
...     '03 岩手県,1203203,6718,17204\n'
...     '04 宮城県,2280203,14480,24632\n'
...     '05 秋田県,955659,4499,15379\n'
... ))
>>> table = table.convert(
...     convertor="update_col_contains",
...     params={
...         "input_col_idx": 0,
...         "query": " ",
...         "new": "",
...     },
... )
>>> table.write()
,人口,出生数,死亡数
全国,123398962,840835,1372755
01 北海道,5188441,29523,65078
...
class tablelinker.convertors.basics.update_col.PatternMatchUpdateColConvertor
概要

指定した列の値が指定した正規表現と一致する場合、 一致した部分を新しい文字列に置き換えます。 正規表現は列の途中が一致しても対象となります(search)。

コンバータ名

"update_col_pattern"

パラメータ
  • "input_col_idx": 検索対象列の列番号または列名 [必須]

  • "query": 正規表現 [必須]

  • "new": 置き換える文字列 [必須]

サンプル

先頭列が「01 北海道」のように数字に続く空白を含む場合、 その部分を「」に置き換えます(削除)。

  • タスクファイル例

{
    "convertor": "update_col_pattern",
    "params": {
        "input_col_idx": 0,
        "query": "\d+\s+",
        "new": ""
    }
}
  • コード例

>>> # 「人口動態調査(2020年)上巻_3-3-1_都道府県(特別区-指定都市再掲)
>>> # 別にみた人口動態総覧」(厚生労働省)より作成
>>> # https://www.data.go.jp/data/dataset/mhlw_20211015_0019
>>> from tablelinker import Table
>>> table = Table(data=(
...     ',人口,出生数,死亡数\n'
...     '全 国,123398962,840835,1372755\n'
...     '01 北海道,5188441,29523,65078\n'
...     '02 青森県,1232227,6837,17905\n'
...     '03 岩手県,1203203,6718,17204\n'
...     '04 宮城県,2280203,14480,24632\n'
...     '05 秋田県,955659,4499,15379\n'
... ))
>>> table = table.convert(
...     convertor="update_col_pattern",
...     params={
...         "input_col_idx": 0,
...         "query": r"\d+\s+",
...         "new": "",
...     },
... )
>>> table.write()
,人口,出生数,死亡数
全 国,123398962,840835,1372755
北海道,5188441,29523,65078
青森県,1232227,6837,17905
...
class tablelinker.convertors.basics.zenkaku.ToHankakuConvertor
概要

全角文字を半角文字に変換します。

コンバータ名

"to_hankaku"

パラメータ(InputOutputConvertor 共通)
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "output_col_idx": 変換した結果を出力する列番号または 列名のリスト

  • "output_col_name": 結果を出力する列名

  • "overwrite": 既に値がある場合に上書きするかどうか [True]

パラメータ(コンバータ固有)
  • "kana": カナ文字を変換対象に含める [True]

  • "ascii": アルファベットと記号を対象に含める [True]

  • "digit": 数字を対象に含める [True]

  • "ignore_chars": 対象に含めない文字 [""]

注釈(InputOutputConvertor 共通)
  • output_col_name が省略された場合、 input_col_idx 列の列名が出力列名として利用されます。

  • output_col_idx が省略された場合、 出力列名が存在する列名ならばその列の位置に出力し、 存在しないならば最後尾に追加します。

注釈
  • 変換処理は列名には適用されません。

サンプル

「連絡先電話番号」列に含まれる全角数字と記号を半角に置き換えます。

  • タスクファイル例

{
    "convertor": "to_hankaku",
    "params": {
        "input_col_idx": "電話番号",
        "output_col_idx": "電話番号",
        "kana": false,
        "ascii": true,
        "digit": true,
        "overwrite": true
    }
}
  • コード例

>>> # 「東京都災害拠点病院一覧」(東京都福祉局)より作成(令和4年1月1日現在)
>>> # https://www.fukushihoken.metro.tokyo.lg.jp/iryo/kyuukyuu/saigai/kyotenbyouinlist.html
>>> from tablelinker import Table
>>> table = Table(data=(
...    '施設名,所在地,電話番号,病床数\n'
...    '日本大学病院,千代田区神田駿河台1-6,03-3293-1711,320\n'
...    '三井記念病院,千代田区神田和泉町1,03-3862-9111,482\n'
...    '聖路加国際病院,中央区明石町9-1,03-3541-5151,520\n'
...    '東京都済生会中央病院,港区三田1-4-17,03-3451-8211,535\n'
...    '東京慈恵会医科大学附属病院,港区西新橋3-19-18,03-3433-1111,"1,075"\n'
... ))
>>> table = table.convert(
...     convertor="to_hankaku",
...     params={
...         "input_col_idx": "電話番号",
...         "output_col_idx": "電話番号",
...         "kana": False,
...         "ascii": True,
...         "digit": True,
...         "overwrite": True,
...     },
... )
>>> table.write()
施設名,所在地,電話番号,病床数
日本大学病院,千代田区神田駿河台1-6,03-3293-1711,320
三井記念病院,千代田区神田和泉町1,03-3862-9111,482
聖路加国際病院,中央区明石町9-1,03-3541-5151,520
東京都済生会中央病院,港区三田1-4-17,03-3451-8211,535
東京慈恵会医科大学附属病院,港区西新橋3-19-18,03-3433-1111,"1,075"
class tablelinker.convertors.basics.zenkaku.ToZenkakuConvertor
概要

半角文字を全角文字に変換します。

コンバータ名

"to_zenkaku"

パラメータ(InputOutputConvertor 共通)
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "output_col_idx": 分割した結果を出力する列番号または 列名のリスト

  • "output_col_name": 結果を出力する列名

  • "overwrite": 既に値がある場合に上書きするかどうか [False]

パラメータ(コンバータ固有)
  • "kana": カナ文字を変換対象に含める [True]

  • "ascii": アルファベットと記号を対象に含める [True]

  • "digit": 数字を対象に含める [True]

  • "ignore_chars": 対象に含めない文字 [""]

注釈(InputOutputConvertor 共通)
  • output_col_name が省略された場合、 input_col_idx 列の列名が出力列名として利用されます。

  • output_col_idx が省略された場合、 出力列名が存在する列名ならばその列の位置に出力し、 存在しないならば最後尾に追加します。

注釈
  • 変換処理は列名には適用されません。

サンプル

「所在地」列に含まれる半角文字を全角文字に置き換えます。

  • タスクファイル例

{
    "convertor": "to_zenkaku",
    "params": {
        "input_col_idx": "住所",
        "output_col_idx": "住所",
        "kana": true,
        "ascii": true,
        "digit": true,
        "overwrite": true
    }
}
  • コード例

>>> #「札幌市内の医療機関一覧」より作成
>>> # https://ckan.pf-sapporo.jp/dataset/sapporo_hospital
>>> from tablelinker import Table
>>> table = Table(data=(
...     'NO,名称,住所\n'
...     '101100302,特定医療法人平成会平成会病院,北海道札幌市中央区北1条西18丁目1番1\n'
...     '101010421,時計台記念病院,北海道札幌市中央区北1条東1丁目2番地3\n'
...     '101010014,JR札幌病院,北海道札幌市中央区北3条東1丁目1番地\n'
... ))
>>> table = table.convert(
...     convertor="to_zenkaku",
...     params={
...         "input_col_idx": "住所",
...         "output_col_idx": "住所",
...         "kana": True,
...         "ascii": True,
...         "digit": True,
...         "overwrite": True,
...     },
... )
>>> table.write()
NO,名称,住所
101100302,特定医療法人平成会平成会病院,北海道札幌市中央区北1条西18丁目1番1
101010421,時計台記念病院,北海道札幌市中央区北1条東1丁目2番地3
101010014,JR札幌病院,北海道札幌市中央区北3条東1丁目1番地

拡張コンバータ

外部知識や外部サービスを利用するコンバータです。

拡張コンバータは辞書の読み込みやネットワーク接続を行う必要があるため、 最初に利用する際に少し時間がかかることがあります。

日時抽出・変換

class tablelinker.convertors.extras.date_extract.DateExtractConvertor
概要

文字列から日付を抽出し、指定したフォーマットで出力します。

コンバータ名

"date_extract"

パラメータ(InputOutputConvertor 共通)
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "output_col_name": 結果を出力する列名

  • "output_col_idx": 分割した結果を出力する列番号または列名

  • "overwrite": 既に値がある場合に上書きするかどうか [False]

パラメータ(コンバータ固有)
  • "format": 日時フォーマット ["%Y-%m-%d"]

  • "default": 日時が抽出できなかった場合の値 [""]

注釈(InputOutputConvertor 共通)
  • output_col_name が省略された場合、 input_col_idx 列の列名が出力列名として利用されます。

  • output_col_idx が省略された場合、 出力列名が存在する列名ならばその列の位置に出力し、 存在しないならば最後尾に追加します。

注釈(コンバータ固有)
  • formatstrftime() と strptime() の書式コード のコードで記述してください。

  • format 時分秒を指定すると常に 0 になります。

  • format で指定した項目が抽出できない場合(たとえば %Y が 含まれているけれど列の値が "1月1日" で年が分からないなど)、 default の値が出力されます。

サンプル

「開催期間」列から開催開始日を抽出します。

  • タスクファイル例

{
    "convertor": "date_extract",
    "params": {
        "input_col_idx": "開催期間",
        "output_col_name": "開催開始日",
        "output_col_idx": 0,
        "format": "%Y-%m-%d"
    }
}
  • コード例

>>> # 東京国立博物館「展示・催し物」より作成
>>> # https://www.tnm.jp/modules/r_calender/index.php
>>> from tablelinker import Table
>>> table = Table(data=(
...     "展示名,会場,期間\n"
...     "令和5年 新指定 国宝・重要文化財,平成館 企画展示室,2023年1月31日(火) ~ 2023年2月19日(日)\n"
...     "特別企画「大安寺の仏像」,本館 11室,2023年1月2日(月・休) ~ 2023年3月19日(日)\n"
...     "未来の国宝―東京国立博物館 書画の逸品―,本館 2室,2023年1月31日(火) ~ 2023年2月26日(日)\n"
...     "創立150年記念特集 王羲之と蘭亭序,東洋館 8室,2023年1月31日(火) ~ 2023年4月23日(日)\n"
...     "創立150年記念特集 近世能狂言面名品選 ー「天下一」号を授かった面打ー,本館 14室,2023年1月2日(月・休) ~ 2023年2月26日(日)\n"
... ))
>>> table = table.convert(
...     convertor="date_extract",
...     params={
...         "input_col_idx": "期間",
...         "output_col_name": "開催開始日",
...         "output_col_idx": 0,
...         "format": "%Y-%m-%d",
...     },
... )
>>> table.write()
開催開始日,展示名,会場,期間
2023-01-31,令和5年 新指定 国宝・重要文化財,平成館 企画展示室,2023年1月31日(火) ~ 2023年2月19日(日)
2023-01-02,特別企画「大安寺の仏像」,本館 11室,2023年1月2日(月・休) ~ 2023年3月19日(日)
2023-01-31,未来の国宝―東京国立博物館 書画の逸品―,本館 2室,2023年1月31日(火) ~ 2023年2月26日(日)
2023-01-31,創立150年記念特集 王羲之と蘭亭序,東洋館 8室,2023年1月31日(火) ~ 2023年4月23日(日)
2023-01-02,創立150年記念特集 近世能狂言面名品選 ー「天下一」号を授かった面打ー,本館 14室,2023年1月2日(月・休) ~ 2023年2月26日(日)
class tablelinker.convertors.extras.date_extract.DatetimeExtractConvertor
概要

文字列から日時を抽出し、指定したフォーマットで出力します。

コンバータ名

"datetime_extract"

パラメータ(InputOutputConvertor 共通)
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "output_col_name": 結果を出力する列名

  • "output_col_idx": 分割した結果を出力する列番号または列名

  • "overwrite": 既に値がある場合に上書きするかどうか [True]

パラメータ(コンバータ固有)
  • "format": 日時フォーマット ["%Y-%m-%d %H:%M:%S"]

  • "default": 日時が抽出できなかった場合の値 [""]

注釈(InputOutputConvertor 共通)
  • output_col_name が省略された場合、 input_col_idx 列の列名が出力列名として利用されます。

  • output_col_idx が省略された場合、 出力列名が存在する列名ならばその列の位置に出力し、 存在しないならば最後尾に追加します。

注釈(コンバータ固有)
  • formatstrftime() と strptime() の書式コード のコードで記述してください。

  • format で指定した項目が抽出できない場合(たとえば %Y が 含まれているけれど列の値が "1月1日" で年が分からないなど)、 default の値が出力されます。

サンプル

「発生時刻」列から発生年月日と時分を抽出します。

  • タスクファイル例

{
    "convertor": "datetime_extract",
    "params": {
        "input_col_idx": "発生時刻",
        "output_col_name": "発生時刻",
        "output_col_idx": 0,
        "format": "%Y-%m-%d %H:%M",
        "overwrite": true
    }
}
  • コード例

>>> # 「Yahoo 地震速報」より作成
>>> # https://typhoon.yahoo.co.jp/weather/jp/earthquake/
>>> from tablelinker import Table
>>> table = Table(data=(
...     "発生時刻,震源地,マグニチュード,最大震度\n"
...     "2023年1月31日 4時15分ごろ,宮城県沖,4.3,2\n"
...     "2023年1月30日 18時16分ごろ,富山県西部,3.4,2\n"
...     "2023年1月30日 9時32分ごろ,栃木県南部,3.5,1\n"
...     "2023年1月29日 21時20分ごろ,神奈川県西部,4.8,3\n"
...     "2023年1月29日 12時07分ごろ,茨城県北部,2.9,1\n"
...     "2023年1月29日 9時18分ごろ,和歌山県北部,2.7,1\n"
...     "2023年1月27日 15時03分ごろ,福島県沖,4.2,2\n"
...     "2023年1月27日 13時51分ごろ,岐阜県美濃中西部,2.7,1\n"
...     "2023年1月27日 13時49分ごろ,岐阜県美濃中西部,3.0,1\n"
...     "2023年1月27日 13時28分ごろ,福島県沖,3.6,1\n"
... ))
>>> table = table.convert(
...     convertor="datetime_extract",
...     params={
...         "input_col_idx": "発生時刻",
...         "output_col_name": "発生時刻",
...         "output_col_idx": 0,
...         "format": "%Y-%m-%dT%H:%M:00",
...         "overwrite": True,
...     },
... )
>>> table.write()
発生時刻,震源地,マグニチュード,最大震度
2023-01-31T04:15:00,宮城県沖,4.3,2
2023-01-30T18:16:00,富山県西部,3.4,2
2023-01-30T09:32:00,栃木県南部,3.5,1
2023-01-29T21:20:00,神奈川県西部,4.8,3
2023-01-29T12:07:00,茨城県北部,2.9,1
2023-01-29T09:18:00,和歌山県北部,2.7,1
2023-01-27T15:03:00,福島県沖,4.2,2
2023-01-27T13:51:00,岐阜県美濃中西部,2.7,1
2023-01-27T13:49:00,岐阜県美濃中西部,3.0,1
2023-01-27T13:28:00,福島県沖,3.6,1
class tablelinker.convertors.extras.wareki.ToSeirekiConvertor
概要

和暦から西暦を計算します。

コンバータ名

"to_seireki"

パラメータ(InputOutputConvertor 共通)
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "output_col_name": 結果を出力する列名

  • "output_col_idx": 分割した結果を出力する列番号または列名

  • "overwrite": 既に値がある場合に上書きするかどうか [True]

注釈(InputOutputConvertor 共通)
  • output_col_name が省略された場合、 input_col_idx 列の列名が出力列名として利用されます。

  • output_col_idx が省略された場合、 出力列名が存在する列名ならばその列の位置に出力し、 存在しないならば最後尾に追加します。

サンプル

「噴火年月日」列を西暦に変換します。

  • タスクファイル例

{
    "convertor": "to_seireki",
    "params": {
        "input_col_idx": "噴火年月日",
        "output_col_idx": 0,
        "output_col_name": "噴火年月日"
        "overwrite": true
    }
}
  • コード例

>>> # 気象庁「過去に発生した火山災害」より作成
>>> # https://www.data.jma.go.jp/vois/data/tokyo/STOCK/kaisetsu/volcano_disaster.htm
>>> from tablelinker import Table
>>> table = Table(data=(
...     "噴火年月日,火山名,犠牲者(人),備考\n"
...     "享保6年6月22日,浅間山,15,噴石による\n"
...     "寛保元年8月29日,渡島大島,1467,岩屑なだれ・津波による\n"
...     "明和元年7月,恵山,多数,噴気による\n"
...     "安永8年11月8日,桜島,150余,噴石・溶岩流などによる「安永大噴火」\n"
...     "天明元年4月11日,桜島,8、不明7,高免沖の島で噴火、津波による\n"
...     "天明3年8月5日,浅間山,1151,火砕流、土石なだれ、吾妻川・利根川の洪水による\n"
...     "天明5年4月18日,青ヶ島,130~140,当時327人の居住者のうち130~140名が死亡と推定され、残りは八丈島に避難\n"
...     "寛政4年5月21日,雲仙岳,約15000,地震及び岩屑なだれによる「島原大変肥後迷惑」\n"
...     "文政5年3月23日,有珠山,103,火砕流による\n"
...     "天保12年5月23日,口永良部島,多数,噴火による、村落焼亡\n"
...     "安政3年9月25日,北海道駒ヶ岳,19~27,噴石、火砕流による\n"
...     "明治21年7月15日,磐梯山,461(477とも),岩屑なだれにより村落埋没\n"
...     "明治33年7月17日,安達太良山,72,火口の硫黄採掘所全壊\n"
...     "明治35年8月上旬(7日~9日のいつか),伊豆鳥島,125,全島民死亡。\n"
...     "大正3年1月12日,桜島,58~59,噴火・地震による「大正大噴火」\n"
...     "大正15年5月24日,十勝岳,144(不明を含む),融雪型火山泥流による「大正泥流」\n"
...     "昭和15年7月12日,三宅島,11,火山弾・溶岩流などによる\n"
...     "昭和27年9月24日,ベヨネース列岩,31,海底噴火(明神礁)、観測船第5海洋丸遭難により全員殉職\n"
...     "昭和33年6月24日,阿蘇山,12,噴石による\n"
...     "平成3年6月3日,雲仙岳,43(不明を含む),火砕流による「平成3年(1991年)雲仙岳噴火」\n"
...     "平成26年9月27日,御嶽山,63(不明を含む),噴石等による\n"
... ))
>>> table = table.convert(
...     convertor="to_seireki",
...     params={
...         "input_col_idx": "噴火年月日",
...         "output_col_name": "噴火年月日",
...         "output_col_idx": 0,
...         "overwrite": True,
...     },
... )
>>> table.write()
噴火年月日,火山名,犠牲者(人),備考
1721年6月22日,浅間山,15,噴石による
1741年8月29日,渡島大島,1467,岩屑なだれ・津波による
1764年7月,恵山,多数,噴気による
1779年11月8日,桜島,150余,噴石・溶岩流などによる「安永大噴火」
...
class tablelinker.convertors.extras.wareki.ToWarekiConvertor
概要

西暦から和暦を計算します。

コンバータ名

"to_wareki"

パラメータ(InputOutputConvertor 共通)
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "output_col_name": 結果を出力する列名

  • "output_col_idx": 分割した結果を出力する列番号または列名

  • "overwrite": 既に値がある場合に上書きするかどうか [True]

注釈(InputOutputConvertor 共通)
  • output_col_name が省略された場合、 input_col_idx 列の列名が出力列名として利用されます。

  • output_col_idx が省略された場合、 出力列名が存在する列名ならばその列の位置に出力し、 存在しないならば最後尾に追加します。

サンプル

「年次」列の西暦年を和暦に変換して「和暦」列に出力します。

{
    "convertor": "to_wareki",
    "params": {
        "input_col_idx": "年次",
        "output_col_name": "和暦"
        "output_col_idx": 1
    }
}
  • コード例

>>> # 統計局「人口推計 / 長期時系列データ 長期時系列データ
>>> # (平成12年~令和2年)」より作成
>>> from tablelinker import Table
>>> # https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&toukei=00200524&tstat=000000090001&cycle=0&tclass1=000000090004&tclass2=000001051180&tclass3val=0
>>> table = Table(data=(
...     "年次,総人口(千人)\n"
...     "2000,126926\n"
...     "2005,127768\n"
...     "2010,128057\n"
...     "2015,127095\n"
...     "2020,126146\n"
... ))
>>> table = table.convert(
...     convertor="to_wareki",
...     params={
...         "input_col_idx": "年次",
...         "output_col_name": "和暦",
...         "output_col_idx": 1,
...     },
... )
>>> table.write()
年次,和暦,総人口(千人)
2000,平成12,126926
2005,平成17,127768
2010,平成22,128057
2015,平成27,127095
2020,令和2,126146

住所ジオコーダ

class tablelinker.convertors.extras.geocoder.ToCodeConvertor
概要

住所から自治体コードを計算します。

コンバータ名

"geocoder_code"

パラメータ(InputOutputConvertor 共通)
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "output_col_name": 結果を出力する列名

  • "output_col_idx": 分割した結果を出力する列番号または列名

  • "overwrite": 既に値がある場合に上書きするかどうか [True]

パラメータ(コンバータ固有)
  • "within": 検索対象とする都道府県名、市区町村名のリスト []

  • "within_col_idxs": 検索対象とする都道府県名、市区町村名を含む 列番号または列名のリスト []

  • "default": コードが計算できなかった場合の値 ["0"]

  • "with_check_digit": 検査数字を含むかどうか [False]

注釈(InputOutputConvertor 共通)
  • output_col_name が省略された場合、 input_col_idx 列の列名が出力列名として利用されます。

  • output_col_idx が省略された場合、 出力列名が存在する列名ならばその列の位置に出力し、 存在しないならば最後尾に追加します。

注釈(コンバータ固有)
  • with_check_digit が False の場合は JIS の 5 桁コードを、 True の場合は総務省の 6 桁コードを返します。

  • 住所が一意ではない場合、最初の候補を選択します。 精度を向上させたい場合は within で候補となる 都道府県名や市区町村名を指定してください。

サンプル

「住所」列から 5 桁自治体コードを算出し、 1列目(先頭の次)に新しく「市区町村コード」列を作って格納します。 「住所」列が空欄などで計算できない場合は "-" を格納します。

  • タスクファイル例

{
    "convertor": "geocoder_code",
    "params": {
        "input_col_idx": "住所",
        "output_col_name": "市区町村コード",
        "output_col_idx": 1,
        "within": ["北海道"],
        "default": "-"
    }
}
  • コード例

>>> from tablelinker import Table
>>> # 「令和3年度全国大学一覧/01国立大学一覧 (Excel:8.7MB)」より作成
>>> # https://www.mext.go.jp/a_menu/koutou/ichiran/mext_01856.html
>>> table = Table(data=(
...     '"機関名","郵便番号","所在地"\n'
...     '"北海道大学","060-0808","札幌市北区北8条西5"\n'
...     '"北海道教育大学","002-8501","札幌市北区あいの里5条3-1-3"\n'
...     '"室蘭工業大学","050-8585","室蘭市水元町27-1"\n'
... ))
>>> table = table.convert(
...     convertor="geocoder_code",
...     params={
...         "input_col_idx": "所在地",
...         "output_col_name": "市区町村コード",
...         "output_col_idx": 1,
...         "within": ["北海道"],
...         "default": "-",
...     },
... )
>>> table.write()
機関名,市区町村コード,郵便番号,所在地
北海道大学,01102,060-0808,札幌市北区北8条西5
北海道教育大学,01102,002-8501,札幌市北区あいの里5条3-1-3
室蘭工業大学,01205,050-8585,室蘭市水元町27-1
class tablelinker.convertors.extras.geocoder.ToLatLongConvertor
概要

住所から緯度・経度・住所レベルを計算します。

コンバータ名

"geocoder_latlong"

パラメータ(InputOutputsConvertor 共通)
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "output_col_names": 結果を出力する列名のリスト

  • "output_col_idx": 分割した結果を出力する列番号または列名

  • "overwrite": 既に値がある場合に上書きするかどうか [True]

パラメータ(コンバータ固有)
  • "within": 検索対象とする都道府県名、市区町村名のリスト []

  • "within_col_idxs": 検索対象とする都道府県名、市区町村名を含む 列番号または列名のリスト []

  • "default": 都道府県名が計算できなかった場合の値 ["", "", ""]

注釈(InputOutputsConvertor 共通)
  • output_col_idx が省略された場合、最後尾に追加します。

  • output_col_names で指定された列名が存在している場合、 output_col_idx が指定する位置に移動されます。

注釈(コンバータ固有)
  • output_col_names には、「緯度」「経度」「住所レベル」を 格納するための3つの列名を指定する必要があります。 省略するとエラー(ValueError)になります。

  • 住所が一意ではない場合、最初の候補を選択します。 精度を向上させたい場合は within で候補となる 都道府県名や市区町村名を指定してください。

サンプル

「所在地」列から経緯度と住所レベルを計算し、 先頭に新しく「緯度」「経度」「住所レベル」列を作って最後尾に格納します。 「所在地」列が空欄などで計算できない場合は "-" を格納します。

  • タスクファイル例

{
    "convertor": "geocoder_latlong",
    "params": {
        "input_col_idx": "所在地",
        "output_col_names": ["緯度", "経度", "住所レベル"],
        "output_col_idx": null,
        "default": "-"
    }
}
  • コード例

>>> # 「令和3年度全国大学一覧/01国立大学一覧 (Excel:8.7MB)」より作成
>>> # https://www.mext.go.jp/a_menu/koutou/ichiran/mext_01856.html
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"機関名","郵便番号","所在地"\n'
...     '"北海道大学","060-0808","札幌市北区北8条西5"\n'
...     '"北海道教育大学","002-8501","札幌市北区あいの里5条3-1-3"\n'
...     '"室蘭工業大学","050-8585","室蘭市水元町27-1"\n'
... ))
>>> table = table.convert(
...     convertor="geocoder_latlong",
...     params={
...         "input_col_idx": "所在地",
...         "output_col_names": ["緯度", "経度", "住所レベル"],
...         "output_col_idx": None,
...         "default": "-",
...     },
... )
>>> table.write()
機関名,郵便番号,所在地,緯度,経度,住所レベル
北海道大学,060-0808,札幌市北区北8条西5,43.070446,141.347151,6
北海道教育大学,002-8501,札幌市北区あいの里5条3-1-3,43.170497,141.39375,7
室蘭工業大学,050-8585,室蘭市水元町27-1,42.378715,141.034036,7
class tablelinker.convertors.extras.geocoder.ToMunicipalityConvertor
概要

住所から市区町村名を計算します。

コンバータ名

"geocoder_municipality"

パラメータ(InputOutputsConvertor 共通)
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "output_col_names": 結果を出力する列名のリスト

  • "output_col_idx": 分割した結果を出力する列番号または列名

  • "overwrite": 既に値がある場合に上書きするかどうか [True]

パラメータ(コンバータ固有)
  • "within": 検索対象とする都道府県名、市区町村名のリスト []

  • "within_col_idxs": 検索対象とする都道府県名、市区町村名を含む 列番号または列名のリスト []

  • "default": 都道府県名が計算できなかった場合の値 ["", ""]

注釈(InputOutputsConvertor 共通)
  • output_col_idx が省略された場合、最後尾に追加します。

  • output_col_names で指定された列名が存在している場合、 output_col_idx が指定する位置に移動されます。

注釈(コンバータ固有)
  • output_col_names に2列分の名前を指定した場合、 政令指定都市ならば1列目に市名、2列目に区名を格納します。 それ以外の市区町村の場合(特別区を含む)、1列目に 市区町村名、2列目に空欄を格納します。

  • output_col_names に1列分の名前しか指定しなかった場合、 政令指定都市ならばその列に市名と区名を空白で区切って格納します。 それ以外の市区町村の場合(特別区を含む)、市区町村名を格納します。

  • 住所が一意ではない場合、最初の候補を選択します。 精度を向上させたい場合は within で候補となる 都道府県名や市区町村名を指定してください。

サンプル

「所在地」列から市区町村名を計算し、 「所在地」列の前に新しく「市区町村」「(区)」列を作って格納します。 「所在地」列が空欄などで計算できない場合は "-" を格納します。

  • タスクファイル例

{
    "convertor": "geocoder_municipality",
    "params": {
        "input_col_idx": "所在地",
        "output_col_name": ["市区町村", "(区)"]
        "output_col_idx": "所在地",
        "default": "-"
    }
}
  • コード例

>>> # 「令和3年度全国大学一覧/01国立大学一覧 (Excel:8.7MB)」より作成
>>> # https://www.mext.go.jp/a_menu/koutou/ichiran/mext_01856.html
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"機関名","郵便番号","所在地"\n'
...     '"北海道大学","060-0808","札幌市北区北8条西5"\n'
...     '"北海道教育大学","002-8501","札幌市北区あいの里5条3-1-3"\n'
...     '"室蘭工業大学","050-8585","室蘭市水元町27-1"\n'
... ))
>>> table = table.convert(
...     convertor="geocoder_municipality",
...     params={
...         "input_col_idx": "所在地",
...         "output_col_names": ["市区町村", "(区)"],
...         "output_col_idx": "所在地",
...         "default": "-",
...     },
... )
>>> table.write()
機関名,郵便番号,市区町村,(区),所在地
北海道大学,060-0808,札幌市,北区,札幌市北区北8条西5
北海道教育大学,002-8501,札幌市,北区,札幌市北区あいの里5条3-1-3
室蘭工業大学,050-8585,室蘭市,-,室蘭市水元町27-1
class tablelinker.convertors.extras.geocoder.ToNodeIdConvertor
概要

住所からノードIDを計算します。

住所から都道府県名や郵便番号を計算するコンバータを利用すると、 そのたびに住所解析処理を行う必要があるため時間がかかりますが、 住所の代わりにノードIDを入力とすることで 住所解析を一度だけ行えば済むようになり、高速化できます。

コンバータ名

"geocoder_nodeid"

パラメータ(InputOutputConvertor 共通)
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "output_col_name": 結果を出力する列名

  • "output_col_idx": 分割した結果を出力する列番号または列名

  • "overwrite": 既に値がある場合に上書きするかどうか [True]

パラメータ(コンバータ固有)
  • "within": 検索対象とする都道府県名、市区町村名のリスト []

  • "within_col_idxs": 検索対象とする都道府県名、市区町村名を含む 列番号または列名のリスト []

  • "default": ノードが見つからなかった場合の値 [""]

注釈(InputOutputConvertor 共通)
  • output_col_name が省略された場合、 input_col_idx 列の列名が出力列名として利用されます。

  • output_col_idx が省略された場合、 出力列名が存在する列名ならばその列の位置に出力し、 存在しないならば最後尾に追加します。

注釈(コンバータ固有)
  • 住所が一意ではない場合、最初の候補を選択します。 精度を向上させたい場合は within で候補となる 都道府県名や市区町村名を指定してください。

  • ノードIDは住所辞書固有のIDなので、辞書を差し替えると 同じ住所でも ID が変わる点に注意してください。

サンプル

「所在地」列から住所ノードIDを算出し、 最後尾に「住所ノードID」列を作って格納します。 「所在地」列が空欄などで計算できない場合は "" を格納します。

  • タスクファイル例

{
    "convertor": "geocoder_nodeid",
    "params": {
        "input_col_idx": "所在地",
        "output_col_name": "住所ノードID",
        "output_col_idx": null,
        "default": ""
    }
}
  • コード例

>>> # 「令和3年度全国大学一覧/01国立大学一覧 (Excel:8.7MB)」より作成
>>> # https://www.mext.go.jp/a_menu/koutou/ichiran/mext_01856.html
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"機関名","郵便番号","所在地"\n'
...     '"北海道大学","060-0808","札幌市北区北8条西5"\n'
...     '"北海道教育大学","002-8501","札幌市北区あいの里5条3-1-3"\n'
...     '"室蘭工業大学","050-8585","室蘭市水元町27-1"\n'
... ))
>>> table = table.convert(
...     convertor="geocoder_nodeid",
...     params={
...         "input_col_idx": "所在地",
...         "output_col_name": "住所ノードID",
...         "output_col_idx": None,
...         "within": ["北海道"],
...         "default": "",
...     },
... )
>>> table.write()
機関名,郵便番号,所在地,住所ノードID
北海道大学,060-0808,札幌市北区北8条西5,...
北海道教育大学,002-8501,札幌市北区あいの里5条3-1-3,...
室蘭工業大学,050-8585,室蘭市水元町27-1,...
class tablelinker.convertors.extras.geocoder.ToPostcodeConvertor
概要

住所から郵便番号を検索します。ただしビルのフロアごとに 振られている番号や、事業者の個別郵便番号は検索できません。

コンバータ名

"geocoder_postcode"

パラメータ(InputOutputConvertor 共通)
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "output_col_name": 結果を出力する列名

  • "output_col_idx": 分割した結果を出力する列番号または列名

  • "overwrite": 既に値がある場合に上書きするかどうか [True]

パラメータ(コンバータ固有)
  • "within": 検索対象とする都道府県名、市区町村名のリスト []

  • "within_col_idxs": 検索対象とする都道府県名、市区町村名を含む 列番号または列名のリスト []

  • "default": 郵便番号が計算できなかった場合の値 [""]

  • "hiphen": 3桁目と4桁目の間にハイフンをいれるかどうか [False]

注釈(InputOutputsConvertor 共通)
  • output_col_idx が省略された場合、最後尾に追加します。

  • output_col_names で指定された列名が存在している場合、 output_col_idx が指定する位置に移動されます。

注釈(コンバータ固有)
  • 住所が一意ではない場合、最初の候補を選択します。 精度を向上させたい場合は within で候補となる 都道府県名や市区町村名を指定してください。

注釈(InputOutputConvertor 共通)
  • output_col_name が省略された場合、 input_col_idx 列の列名が出力列名として利用されます。

  • output_col_idx が省略された場合、 出力列名が存在する列名ならばその列の位置に出力し、 存在しないならば最後尾に追加します。

サンプル

「所在地」列から郵便番号を算出し、 「所在地」列の前の「郵便番号」列に上書きします。 「所在地」列が空欄などで計算できない場合は空欄にします。

  • タスクファイル例

{
    "convertor": "geocoder_postcode",
    "params": {
        "input_col_idx": "所在地",
        "output_col_name": "郵便番号",
        "output_col_idx": "所在地",
        "default": "",
        "hiphen": true,
        "overwrite": true
    }
}
  • コード例

>>> # 「令和3年度全国大学一覧/01国立大学一覧 (Excel:8.7MB)」より作成
>>> # https://www.mext.go.jp/a_menu/koutou/ichiran/mext_01856.html
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"機関名","郵便番号","所在地"\n'
...     '"北海道大学","060-0808","札幌市北区北8条西5"\n'
...     '"北海道教育大学","002-8501","札幌市北区あいの里5条3-1-3"\n'
...     '"室蘭工業大学","050-8585","室蘭市水元町27-1"\n'
... ))
>>> table = table.convert(
...     convertor="geocoder_postcode",
...     params={
...         "input_col_idx": "所在地",
...         "output_col_name": "郵便番号",
...         "output_col_idx": "所在地",
...         "default": "",
...         "hiphen": True,
...         "overwrite": True,
...     },
... )
>>> table.write()
機関名,郵便番号,所在地
北海道大学,060-0808,札幌市北区北8条西5
北海道教育大学,002-8075,札幌市北区あいの里5条3-1-3
室蘭工業大学,050-0071,室蘭市水元町27-1
class tablelinker.convertors.extras.geocoder.ToPrefectureConvertor
概要

住所から都道府県名を計算します。

コンバータ名

"geocoder_prefecture"

パラメータ(InputOutputConvertor 共通)
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "output_col_name": 結果を出力する列名

  • "output_col_idx": 分割した結果を出力する列番号または列名

  • "overwrite": 既に値がある場合に上書きするかどうか [True]

パラメータ(コンバータ固有)
  • "within": 検索対象とする都道府県名、市区町村名のリスト []

  • "within_col_idxs": 検索対象とする都道府県名、市区町村名を含む 列番号または列名のリスト []

  • "default": 都道府県名が計算できなかった場合の値 [""]

注釈(InputOutputConvertor 共通)
  • output_col_name が省略された場合、 input_col_idx 列の列名が出力列名として利用されます。

  • output_col_idx が省略された場合、 出力列名が存在する列名ならばその列の位置に出力し、 存在しないならば最後尾に追加します。

注釈(コンバータ固有)
  • 住所が一意ではない場合、最初の候補を選択します。 精度を向上させたい場合は within で候補となる 都道府県名や市区町村名を指定してください。

サンプル

「所在地」列から都道府県名を計算し、 「郵便番号」列の前に新しく「都道府県名」列を作って格納します。 「所在地」列が空欄などで計算できない場合は "" を格納します。

  • タスクファイル例

{
    "convertor": "geocoder_prefecture",
    "params": {
        "input_col_idx": "所在地",
        "output_col_name": "都道府県名",
        "output_col_idx": "郵便番号",
        "default": ""
    }
}
  • コード例

>>> # 「令和3年度全国大学一覧/01国立大学一覧 (Excel:8.7MB)」より作成
>>> # https://www.mext.go.jp/a_menu/koutou/ichiran/mext_01856.html
>>> from tablelinker import Table
>>> table = Table(data=(
...     '"機関名","郵便番号","所在地"\n'
...     '"北海道大学","060-0808","札幌市北区北8条西5"\n'
...     '"北海道教育大学","002-8501","札幌市北区あいの里5条3-1-3"\n'
...     '"室蘭工業大学","050-8585","室蘭市水元町27-1"\n'
... ))
>>> table = table.convert(
...     convertor="geocoder_prefecture",
...     params={
...         "input_col_idx": "所在地",
...         "output_col_name": "都道府県名",
...         "output_col_idx": "郵便番号",
...         "default": "",
...     },
... )
>>> table.write()
機関名,都道府県名,郵便番号,所在地
北海道大学,北海道,060-0808,札幌市北区北8条西5
北海道教育大学,北海道,002-8501,札幌市北区あいの里5条3-1-3
室蘭工業大学,北海道,050-8585,室蘭市水元町27-1

MTab アノテーション

class tablelinker.convertors.extras.mtab.MtabColumnAnnotationConvertor
概要

Mtab を利用して、各列のアノテーションを生成します。 生成したアノテーションは最初の行に格納されます。

コンバータ名

"geocoder_cta"

パラメータ
  • "lines": アノテーションに利用する最大の行数を指定します [100]

注釈
  • アノテーションの候補が複数見つかった場合、 "/" で結合して 列挙します。

  • アノテーションの候補が見つからなかった場合、 "-" を記載します。

サンプル

各列のアノテーションを生成し、最初の行(見出し行の次)に格納します。

  • タスクファイル例

{
    "convertor": "mtab_cta",
    "params": {
        "lines": 100
    }
}
  • コード例

>>> from tablelinker import Table
>>> # mTab API sample より取得
>>> # https://mtab.app/mtab
>>> table = Table(data=(
...     "col0,col1,col2,col3\n"
...     "2MASS J10540655-0031018,-5.7,19.3716366,13.635635128508735\n"
...     "2MASS J0464841+0715177,-2.7747499999999996,26.671235999999997,"
...     "11.818755055646479\n"
...     "2MAS J08351104+2006371,72.216,3.7242887999999996,128.15196099865955\n"
...     "2MASS J08330994+186328,-6.993,6.0962562,127.64996294136303\n"
... ))
>>> table = table.convert(
...     convertor="mtab_cta",
...     params={
...         "lines": 100,
...     },
... )
>>> table.write()
col0,col1,col2,col3
star/near-IR source,-,-,-
2MASS J10540655-0031018,-5.7,19.3716...,13.6356...
...
class tablelinker.convertors.extras.mtab.MtabWikilinkConvertor
概要

Mtab を利用して、各行の情報に合致する Wikidata へのリンクを計算します。

コンバータ名

"geocoder_code"

パラメータ(InputOutputConvertor 共通)
  • "input_col_idx": 対象列の列番号または列名 [必須]

  • "output_col_name": 結果を出力する列名

  • "output_col_idx": 分割した結果を出力する列番号または列名

  • "overwrite": 既に値がある場合に上書きするかどうか [True]

パラメータ(コンバータ固有)
  • "lines": 処理する最大の行数を指定します [無制限]

注釈(InputOutputConvertor 共通)
  • output_col_name が省略された場合、 input_col_idx 列の列名が出力列名として利用されます。

  • output_col_idx が省略された場合、 出力列名が存在する列名ならばその列の位置に出力し、 存在しないならば最後尾に追加します。

サンプル

先頭列の要素に対応する Wikidata へのリンクを末尾に追加します。 最大100行まで処理します。

  • タスクファイル例

{
    "convertor": "mtab_wikilink",
    "params": {
        "input_col_idx": "col0",
        "output_col_name": "Wikilink",
        "lines": 100
    }
}
  • コード例

>>> from tablelinker import Table
>>> # mTab API sample より取得
>>> # https://mtab.app/mtab
>>> table = Table(data=(
...     "col0,col1,col2,col3\n"
...     "2MASS J10540655-0031018,-5.7,19.3716366,13.635635128508735\n"
...     "2MASS J0464841+0715177,-2.7747499999999996,26.671235999999997,"
...     "11.818755055646479\n"
...     "2MAS J08351104+2006371,72.216,3.7242887999999996,128.15196099865955\n"
...     "2MASS J08330994+186328,-6.993,6.0962562,127.64996294136303\n"
... ))
>>> table = table.convert(
...     convertor="mtab_wikilink",
...     params={
...         "input_col_idx": "col0",
...         "output_col_name": "wikilink",
...         "lines": 100,
...     },
... )
>>> table.write()
col0,col1,col2,col3,wikilink
2MASS J10540655-0031018,-5.7,19.3716...,13.6356...,http://www.wikidata.org/entity/Q...
2MASS J0464841+0715177,-2.7747...,26.6712...,11.8187...,http://www.wikidata.org/entity/Q...
...

列の自動マッピング

class tablelinker.convertors.extras.mapping_col.AutoMappingColsConvertor
概要

指定した列名リストに合わせて既存の列をマッピングします。 マッピングは語ベクトルと表記の類似度によって決定します。

コンバータ名

"auto_mapping_cols"

パラメータ
  • "column_list": 出力したい列名のリスト [必須]

  • "keep_colname": 元の列名を保持するか [False]

  • "threshold": 列をマッピングするしきい値 [40]

注釈
  • 元の列のうち、マッピング先の列との類似度が threshold 以下のものは削除されます。

  • threshold は 0 - 100 の整数で指定します。 値が大きいほど一致度が高いものしか残りません。

  • keep_colname に True を指定すると、元の列名と マッピング先の列名が異なる場合に出力列名を <マッピング先の列名> / <元の列名> に変更します。

サンプル

出力したい列名のリストに合わせてマッピングします。

  • タスクファイル例

{
    "convertor": "auto_mapping_cols",
    "params": {
        "column_list": ["名称", "所在地", "経度", "緯度", "説明"],
        "keep_colname": true
    }
}
  • コード例

>>> # 「八丈島の主な観光スポット一覧」より作成
>>> # https://catalog.data.metro.tokyo.lg.jp/dataset/t134015d0000000002
>>> from tablelinker import Table
>>> table = Table(data=(
...     '観光スポット名称,所在地,緯度,経度,座標系,説明,八丈町ホームページ記載\n'
...     'ホタル水路,,33.108218,139.80102,JGD2011,八丈島は伊豆諸島で唯一、水田耕作がなされた島で鴨川に沿って水田が残っています。ホタル水路は、鴨川の砂防とともに平成元年につくられたもので、毎年6月から7月にかけてホタルの光が美しく幻想的です。,http://www.town.hachijo.tokyo.jp/kankou_spot/mitsune.html#01\n'
...     '登龍峠展望,,33.113154,139.835245,JGD2011,「ノボリュウトウゲ」または「ノボリョウトウゲ」といい、この道を下方から望むとあたかも龍が昇天するように見えるので、この名が付けられました。峠道の頂上近くの展望台は、八丈島で一、二を争う景勝地として名高く、新東京百景の一つにも選ばれました。眼前に八丈富士と神止山、八丈小島を、眼下には底土港や神湊港、三根市街を一望できます。,http://www.town.hachijo.tokyo.jp/kankou_spot/mitsune.html#02\n'
...     '八丈富士,,33.139168,139.762187,JGD2011,八丈島の北西部を占める山で、東の三原山に対して『西山』と呼ばれます。伊豆諸島の中では最も高い標高854.3メートル。1605年の噴火後、活動を停止している火山で火口は直径400メートル深さ50メートルで、 さらに火口底には中央火口丘がある二重式火山です。裾野が大きくのびた優雅な姿は、八丈島を代表する美しさのひとつです。,http://www.town.hachijo.tokyo.jp/kankou_spot/mitsune.html#03\n'
...     '永郷展望,,33.153559,139.747501,JGD2011,島の北端に近く大越鼻灯台を間近に見る展望台で、すぐ左手に八丈小島が望めます。ここからの八丈小島は、標高618メートルの大平山を中心に形のよい稜線が左右に広がり特に美しいと言われています。周辺は、日本一のビロウヤシの群生地でフェニックス・ロベレニーなど南国の雰囲気が漂っています。空気の澄んだ日には、御蔵島と三宅島を望むことができます。,http://www.town.hachijo.tokyo.jp/kankou_spot/okago.html#04\n'
...     'ふれあい牧場,東京都八丈島 八丈町大賀郷5627-1,33.131167,139.767181,JGD2011,八丈富士の中腹に広がる「ふれあい牧場」は、穏やかな山の傾斜地に黒毛和牛やジャージーが放牧されています。また、牧場内の展望台からは、島の中心部や三原山、八丈島空港が一望でき、夜には満天の星空が眺められます。,http://www.town.hachijo.tokyo.jp/kankou_spot/okago.html#05\n'
...     '空港道路,,33.116885,139.781262,JGD2011,神湊商港(底土港)から八重根商港(都道)までの区間の路線。道路沿いに南国の象徴ハイビスカスが咲き、等間隔にビロウヤシが植栽されている光景は見ごたえがあります。,http://www.town.hachijo.tokyo.jp/kankou_spot/okago.html#06\n'
... ))
>>> table = table.convert(
...     convertor="auto_mapping_cols",
...     params={
...         "column_list": ["名称", "所在地", "経度", "緯度", "説明"],
...         "keep_colname": True,
...     },
... )
>>> table.write()
名称 / 観光スポット名称,所在地,経度,緯度,説明
ホタル水路,,139.80102,33.108218,八丈島は伊豆諸島で唯一、...
登龍峠展望,,139.835245,33.113154,「ノボリュウトウゲ」または...
八丈富士,,139.762187,33.139168,八丈島の北西部を占める山で、...
...