質問編集履歴

1

情報が少なかったので詳しく説明を入れました。

2023/03/10 00:29

投稿

XxhanakoXx
XxhanakoXx

スコア3

test CHANGED
File without changes
test CHANGED
@@ -1,75 +1,72 @@
1
1
  ### 実現したいこと
2
- IF文の結果TRUE時にPASS何もしない
2
+ カラム名1にAAAと言うデータ入っていた場合、データ更新等をしない設定にしたい。
3
- FALSEだった時の処置を条件付きで処理させたい
4
3
  ### 前提
4
+ 参照元のデータはPosgreSQLにあり、
5
+ そこからデータを抽出して必要な加工をPythonで施しSQLサーバに移すと言う作業を定期実行する為のPythonコード内容の一部です。
5
6
 
7
+ データフレーム2に入っているデータが0より大きかった場合、tryifのコードを実行する。
8
+ データフレーム4に入っているデータが0より大きかった場合、elifのコードを実行する。
9
+
6
- PythonSQLサーバからデータを引っ張って必要な情報のみを抜き出
10
+ Pandasデータフレーム0にはSQLサーバからデータを引っ張ってきて必要なデータに編集たデータが入っています。
11
+ Pandasデータフレーム1にはデータフレーム0から抽出した最新データのみを入れています。
12
+ Pandasデータフレーム2には時間を計算した数字が入っています。
7
- そのデータの総合判定部分がAAAと言う値だった場合、PASS⇒何もない
13
+ Pandasデータフレーム3にはカラム名1AAAだった場合に処理するデータを収納ます。
8
- AAAと言う値ではない場合総合判定部分にAAAと記載した行を1行増やしなさい
9
- 上記2つ当てまらずB=B’だった場合は該当行のアラーム部分にBBBと入更新しなさ
14
+ Pandasデータフレーム4にはPandasデタフレーは違う時間を計算した数字がています。
10
- と言う感じのIF文を作成し、タスクスケジューラで一定間隔で実行したかったのですが、
11
- 参照しているSQLサバのデータが変わらない限行っているデータは同じなので、
15
+ Pandasデタフレーム5にはデータフレーム4の値0よ大きかった場合処理するデータを収納します。
12
- 大量に総合判定部分にAAAと記載された同じ内容の行が増えいらないデータが増えることになってしまいました。
13
- 色々条件等を逆にしたり、IF文を分解して1つ1つがあってるのかを確認したのですがうまくいかず煮詰まってしまいました。
14
- 知恵をお貸しいただきたいです。
15
- よろしくお願い致します。
16
16
  ### 発生している問題・エラーメッセージ
17
17
 
18
18
  ```
19
- エラーメッセージ
19
+ ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
20
20
  ```
21
21
 
22
22
  ### 該当のソースコード
23
23
 
24
24
  ```ここに言語名を入力
25
+ 一番最初に作成したコード
25
- try:
26
+ try:
26
- if リセット時間 >= 0:
27
+ if Pandasデータフレーム2 >= 0:
27
- DF2=DF1.copy()
28
+ Pandasデータフレーム3=Pandasデータフレーム1.copy()
28
- DF3.loc[:,'登録時間']=datetime.datetime.now()
29
+ Pandasデータフレーム3.loc[:,'カラム名4']=datetime.datetime.now()
29
- DF3.loc[:,'レポート']=''
30
+ Pandasデータフレーム3.loc[:,'カラム名3']=''
30
- DF3.loc[:,'CD']=''
31
+ Pandasデータフレーム3.loc[:,'カラム名2']=''
31
- DF3.loc[:,'総合判定']='AAA'
32
+ Pandasデータフレーム3.loc[:,'カラム名1']='AAA'
32
- DF3
33
+ Pandasデータフレーム3
33
- 合成=合成.append(DF3, ignore_index = True)
34
+ Pandasデータフレーム0=Pandasデータフレーム0.append(Pandasデータフレーム3, ignore_index = True)
34
- elif アラーム時間 >= 0:
35
+ elif Pandasデタフレー >= 0:
35
- DF4=DF1.copy()
36
+ Pandasデータフレーム5=Pandasデータフレーム1.copy()
36
- DF4.loc[:,'ム']=1
37
+ Pandasデータフレーム5.loc[:,'ラム名5']=1
37
- 合成.update(DF4)
38
+ Pandasデータフレーム0.update(Pandasデータフレーム5)
38
39
  except Exception:
39
40
  pass
40
41
 
42
+ このコードだとエラーは発生せず欲しい結果のデータがPandasデータフレーム3、Pandasデータフレーム5に収納され、
41
- このコドだと総合判定にAAAと入力された同じ行のデータがコードを走らせるたびに増いってしまう
43
+ Pandasデタフレーム0のデータも更新されます、このコードを実行するたびに同じデータが幅してしまう事に気づき、
42
- なので、最初に総合判定にAAAと言うデータがあったら何もしない
43
- AAA言うデータが無かったら総判定にAAAと入力した行を追加するとった感じのIF文に変えてみたがうまく動いていない
44
+ PosgreSQLのデータSQLサーバのデータを結合し結合しファイルで条件分岐をう事つき下記コードを作成。
44
45
 
46
+ 2番目に作成したコード
45
47
  try:
46
- if DF1["総合判定"] != "AAA":
48
+ if Pandasデータフレーム1["カラム名1"] != "AAA":
47
- if リセット時間 >= 0:
49
+ if Pandasデータフレーム2 >= 0:
48
- DF2=DF1.copy()
50
+ Pandasデータフレーム3=Pandasデータフレーム1.copy()
49
- DF3.loc[:,'登録時間']=datetime.datetime.now()
51
+ Pandasデータフレーム3.loc[:,'カラム名4']=datetime.datetime.now()
50
- DF3.loc[:,'レポート']=''
52
+ Pandasデータフレーム3.loc[:,'カラム名3']=''
51
- DF3.loc[:,'CD']=''
53
+ Pandasデータフレーム3.loc[:,'カラム名2']=''
52
- DF3.loc[:,'総合判定']='AAA'
54
+ Pandasデータフレーム3.loc[:,'カラム名1']='AAA'
53
- DF3
55
+ Pandasデータフレーム3
54
- 合成=合成.append(DF3, ignore_index = True)
56
+ Pandasデータフレーム0=Pandasデータフレーム0.append(Pandasデータフレーム3, ignore_index = True)
55
- elif アラーム時間 >= 0:
57
+ elif Pandasデタフレー >= 0:
56
- DF4=DF1.copy()
58
+ Pandasデータフレーム5=Pandasデータフレーム1.copy()
57
- DF4.loc[:,'ム']=1
59
+ Pandasデータフレーム5.loc[:,'ラム名5']=1
58
- 合成.update(DF4)
60
+ Pandasデータフレーム0.update(Pandasデータフレーム5)
59
61
  except Exception:
60
62
  pass
63
+
64
+ しかし、このコードだと最初の部分でエラーが出るという事がこちらのサイトに質問投稿してわかりました。
61
65
  ```
62
66
 
63
67
  ### 試したこと
64
68
 
65
- IF文を分解して試してみたり、最初の部分、
66
- if DF1["総合判定"] != "AAA":
67
- ここの部分を if DF1["総合判定"] == "AAA":こうして次の行にPASSと入力してみたりしたが、
68
- 今度はインデントが不正と言われたりしてダメだった。
69
- 色々サイトを確認した、else:PASSと載っているだけでTRUE時のPASS方法を見つけられなかった。
69
+ その後、どんエラーているのか調べる為エラーが出てたらそエラー内容プリントするというコードを見つけ内容を確認しました。
70
-
71
- 初心者中の初心者な質問で申し訳ありませんがよろしくお願い致します。
72
- 質問も初なもので、何か不手際がありましたら指摘していただけるとありがたいです。
73
70
 
74
71
 
75
72
  ### 補足情報(FW/ツールのバージョンなど)