IQ Bot:明細の不要な行を除外する/明細を条件抽出する


帳票例:明細の不要な行を除外する/明細を条件抽出する

IQ Botで取得したテーブルから、以下のように不要な行を除外する方法を考えてみましょう。

実装例

上記の帳票から「伝票合計」の行を除外するカスタムロジックの実装例は、以下のとおりです。

明細の不要な行を除外するための実装例
# 値を保存する変数: table_values
#表の操作をするときに必ず入れるコード(最初)
import pandas as pd
df = pd.DataFrame(table_values)

#############################################
# ↓↓↓ ここからが今回の処理 ↓↓↓ 
#############################################

#品名欄に「伝票合計」が含まれる行を除外する
df = df[~df['品名'].str.contains("伝票合計")]

#############################################
# ↑↑↑ ここまでが今回の処理 ↑↑↑
#############################################    

#表の操作をするときに必ず入れるコード(最後)
table_values = df.to_dict()

おまじないコード以外の部分はたった1行、非常にシンプルですね。

応用例

上記の例の df = df[~df['品名'].str.contains("伝票合計")] の部分を変えると、色々と応用が効きます。
例えば以下の要領です。

明細の条件抽出:さまざまな応用例

#もとのコード:「品名」の列に「伝票合計」を含んで”いない”行だけを抽出(~が否定を表す)
df = df[~df['品名'].str.contains("伝票合計")]

#上記とは逆に、「品名」の列に「伝票合計」を含む行だけを抽出する場合(否定の~を削除)
df = df[df['品名'].str.contains("伝票合計")]

#「税区分」の列が「外税」の行だけを抽出
df = df[df['税区分'] == "外税"]

#「税率」の列が空欄 "ではない" 行だけを抽出
df = df[df['税率'] != ""]

上記の応用例や、pandasの解説記事(例えばこんなの)を参考に、みなさんもぜひIQ Botを思い通りに使い倒してみてください!