IQ Bot テーブルの空欄を埋める
IQ Botを使って、空欄行を埋めるやりかたを解説します。
イメージ
やりかた
テーブルに対するカスタムロジックを使って、以下のように処理します。
# 値を保存する変数: table_values
#表の操作をするときに必ず入れるコード(最初)
import pandas as pd
df = pd.DataFrame(table_values)
#############################################
# ↓↓↓ ここからが今回の処理 ↓↓↓
#############################################
#日付の空欄埋め
vDate = ""
for i in range(len(df)):
if df.at[str(i),"日付"] != "":
vDate = df.at[str(i),"日付"]
else:
df.at[str(i),"日付"] = vDate
#伝票番号の空欄埋め
vDenpyoNo = ""
for i in range(len(df)):
#df.at[str(i),"伝票番号"] = "aaa"
if df.at[str(i),"伝票番号"] != "":
vDenpyoNo = df.at[str(i),"伝票番号"]
else:
df.at[str(i),"伝票番号"] = vDenpyoNo
#############################################
# ↑↑↑ ここまでが今回の処理 ↑↑↑
#############################################
#表の操作をするときに必ず入れるコード(最後)
table_values = df.to_dict()
解説
上記のカスタムロジックを読んで、何をやっているか想像がついた方は、解説は読み飛ばしてOKです。
処理のポイント
上記の日付、伝票番号とも、処理の仕組みとしてはまったく同じことをやっています。
日付なら日付、伝票番号なら伝票番号の列を1行ずつ読んでいき、値が入っていればそれを変数に格納し、空欄であれば変数の値を代入するという処理です。
#日付の空欄埋め
vDate = "" # 変数の初期化
for i in range(len(df)): # 抽出結果のテーブルを1行1行処理する(処理中の行をi番目とする)
if df.at[str(i),"日付"] != "": # i番目の行の日付欄の値が空欄でなかったら(★)
vDate = df.at[str(i),"日付"] # → 変数に日付欄の値を入れる
else: # ★以外の場合(=i番目の行の日付欄の値が空欄だったら)
df.at[str(i),"日付"] = vDate # → 変数の値で日付欄を埋める
応用ポイント
上記のロジックを自分の業務に当てはめて応用したい場合、基本的に変える部分はdf.at[str(i),"日付"]
の中の"日付"の部分だけでOKです。
この部分を、自分が処理したいIQ Botのテーブル項目名に変えます。
IQ Botの項目名にスペースが含まれている場合は、スペース部分はアンダースコア(_)に置き換えます。
「伝票番号」という項目に対して処理したい場合はdf.at[str(i),"伝票番号"]
に、
「明細 消費税」という項目に対して処理したい場合はdf.at[str(i),"明細_消費税"]
に変えるという要領です。
上記の例のvDate
やvDenpyoNo
はただの変数名なので変えなくても動きますが、見た目のわかりやすさを考えると、しかるべき名前に変えておいた方がいいでしょう(消費税欄ならvTaxなど)。
Author And Source
この問題について(IQ Bot テーブルの空欄を埋める), 我々は、より多くの情報をここで見つけました https://qiita.com/IQ_Bocchi/items/198815e9607f76678718著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .