0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IQ Botのカスタムロジック:Split応用(テーブルに対して適用する、エラー制御を入れる)

Posted at

IQ Botで扱うSplitについての基本は、こちらの記事に記載しています。

上記はフィールドに対するSplitのみに触れており、エラー制御なども組み込んでいないロジックだったので、ここでもう少し踏み込んで紹介します。

#Splitをテーブルに適用するロジック

例えば、フィールドであればfield_value = field_value.split("銀行")[0]と定義するロジックをフィールドに対して適用するとどうなるかというと、こんなかんじです。

スプリットをテーブルに対して適用する場合

#抽象化した関数の定義
def func_split(value, splitter, index):

    x = value

    if splitter in value:
        y = x.split(splitter)

        if (len(x) + 1) >= index:
            x = y[index]
            
    return x

#関数の適用
df['列名'] = df['列名'].apply(func_split, splitter="銀行", index=0)

上記の「抽象化した関数」には、単純なスプリットだけでなく、「もとの文字列の中にそもそも『銀行』の文字が含まれているか」「splitした結果のリストに、指定したindexが存在しうるか」というチェックの処理も含まれています。

さらに、上記のチェックが否であれば、スプリット前の値をそのまま返す、という処理になっています。

なので厳密にはfield_value = field_value.split("銀行")[0]と単純に同じ、というわけではないのですが、実務で利用するときはこんな考慮を組み込むのが通常かと思います。

##関数をフィールドに対して適用する

えっ? そのエラー制御、フィールドに対しても組み込んだ方がいいんじゃないの? と思ったそこのあなた。

おっしゃるとおりです。
その場合は、上記の func_split を当該フィールドのカスタムロジック欄に設定した上で、以下のように関数を適用します。

スプリット(エラー制御あり)をフィールドに対して適用する場合
#関数の適用
field_value = func_split(field_value, "銀行", 0)

##以上!

いかがでしたか?

ご質問がある方は、この記事にコメントをお寄せいただくか、TwitterのDMにてご連絡ください。

※ 上記は毎日チェックできているわけではないため、回答に時間がかかる場合があります。
  IQぼっちをリアルにご存じの方は、仕事用のメールに質問をください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?