実現したいこと
カラム名1にAAAと言うデータが入っていた場合、データの更新等をしない設定にしたい。
前提
参照元のデータはPosgreSQLにあり、
そこからデータを抽出して必要な加工をPythonで施しSQLサーバに移すと言う作業を定期実行する為のPythonコード内容の一部です。
データフレーム2に入っているデータが0より大きかった場合、tryifのコードを実行する。
データフレーム4に入っているデータが0より大きかった場合、elifのコードを実行する。
Pandasデータフレーム0にはSQLサーバからデータを引っ張ってきて必要なデータに編集したデータが入っています。
Pandasデータフレーム1にはデータフレーム0から抽出した最新データのみを入れています。
Pandasデータフレーム2には時間を計算した数字が入っています。
Pandasデータフレーム3にはカラム名1が【AAA】だった場合に処理するデータを収納します。
Pandasデータフレーム4にはPandasデータフレーム2とは違う時間を計算した数字が入っています。
Pandasデータフレーム5にはデータフレーム4の値が0より大きかった場合に処理するデータを収納します。
発生している問題・エラーメッセージ
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
該当のソースコード
一番最初に作成したコード try: if Pandasデータフレーム2 >= 0: Pandasデータフレーム3=Pandasデータフレーム1.copy() Pandasデータフレーム3.loc[:,'カラム名4']=datetime.datetime.now() Pandasデータフレーム3.loc[:,'カラム名3']='' Pandasデータフレーム3.loc[:,'カラム名2']='' Pandasデータフレーム3.loc[:,'カラム名1']='AAA' Pandasデータフレーム3 Pandasデータフレーム0=Pandasデータフレーム0.append(Pandasデータフレーム3, ignore_index = True) elif Pandasデータフレーム4 >= 0: Pandasデータフレーム5=Pandasデータフレーム1.copy() Pandasデータフレーム5.loc[:,'カラム名5']=1 Pandasデータフレーム0.update(Pandasデータフレーム5) except Exception: pass このコードだとエラーは発生せず欲しい結果のデータがPandasデータフレーム3、Pandasデータフレーム5に収納され、 Pandasデータフレーム0のデータも更新されますが、このコードを実行するたびに同じデータが増幅してしまう事に気づき、 PosgreSQLのデータとSQLサーバのデータを結合し結合したファイルで条件分岐を行う事を思いつき下記コードを作成。 2番目に作成したコード try: if Pandasデータフレーム1["カラム名1"] != "AAA": if Pandasデータフレーム2 >= 0: Pandasデータフレーム3=Pandasデータフレーム1.copy() Pandasデータフレーム3.loc[:,'カラム名4']=datetime.datetime.now() Pandasデータフレーム3.loc[:,'カラム名3']='' Pandasデータフレーム3.loc[:,'カラム名2']='' Pandasデータフレーム3.loc[:,'カラム名1']='AAA' Pandasデータフレーム3 Pandasデータフレーム0=Pandasデータフレーム0.append(Pandasデータフレーム3, ignore_index = True) elif Pandasデータフレーム4 >= 0: Pandasデータフレーム5=Pandasデータフレーム1.copy() Pandasデータフレーム5.loc[:,'カラム名5']=1 Pandasデータフレーム0.update(Pandasデータフレーム5) except Exception: pass しかし、このコードだと最初の部分でエラーが出るという事がこちらのサイトに質問投稿してわかりました。
試したこと
その後、どんなエラーが出ているのか調べる為、エラーが出てたらそのエラー内容をプリントするというコードを見つけ内容を確認しました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

回答1件
あなたの回答
tips
プレビュー