質問編集履歴
1
情報が少なかったので詳しく説明を入れました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,75 +1,72 @@
|
|
1
1
|
### 実現したいこと
|
2
|
-
|
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
|
-
P
|
10
|
+
Pandasデータフレーム0にはSQLサーバからデータを引っ張ってきて必要なデータに編集したデータが入っています。
|
11
|
+
Pandasデータフレーム1にはデータフレーム0から抽出した最新データのみを入れています。
|
12
|
+
Pandasデータフレーム2には時間を計算した数字が入っています。
|
7
|
-
|
13
|
+
Pandasデータフレーム3にはカラム名1が【AAA】だった場合に処理するデータを収納します。
|
8
|
-
AAAと言う値ではない場合総合判定部分にAAAと記載した行を1行増やしなさい
|
9
|
-
|
14
|
+
Pandasデータフレーム4にはPandasデータフレーム2とは違う時間を計算した数字が入っています。
|
10
|
-
と言う感じのIF文を作成し、タスクスケジューラで一定間隔で実行したかったのですが、
|
11
|
-
|
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
|
27
|
+
if Pandasデータフレーム2 >= 0:
|
27
|
-
|
28
|
+
Pandasデータフレーム3=Pandasデータフレーム1.copy()
|
28
|
-
|
29
|
+
Pandasデータフレーム3.loc[:,'カラム名4']=datetime.datetime.now()
|
29
|
-
|
30
|
+
Pandasデータフレーム3.loc[:,'カラム名3']=''
|
30
|
-
|
31
|
+
Pandasデータフレーム3.loc[:,'カラム名2']=''
|
31
|
-
|
32
|
+
Pandasデータフレーム3.loc[:,'カラム名1']='AAA'
|
32
|
-
|
33
|
+
Pandasデータフレーム3
|
33
|
-
|
34
|
+
Pandasデータフレーム0=Pandasデータフレーム0.append(Pandasデータフレーム3, ignore_index = True)
|
34
|
-
|
35
|
+
elif Pandasデータフレーム4 >= 0:
|
35
|
-
|
36
|
+
Pandasデータフレーム5=Pandasデータフレーム1.copy()
|
36
|
-
|
37
|
+
Pandasデータフレーム5.loc[:,'カラム名5']=1
|
37
|
-
|
38
|
+
Pandasデータフレーム0.update(Pandasデータフレーム5)
|
38
39
|
except Exception:
|
39
40
|
pass
|
40
41
|
|
42
|
+
このコードだとエラーは発生せず欲しい結果のデータがPandasデータフレーム3、Pandasデータフレーム5に収納され、
|
41
|
-
|
43
|
+
Pandasデータフレーム0のデータも更新されますが、このコードを実行するたびに同じデータが増幅してしまう事に気づき、
|
42
|
-
なので、最初に総合判定にAAAと言うデータがあったら何もしない
|
43
|
-
|
44
|
+
PosgreSQLのデータとSQLサーバのデータを結合し結合したファイルで条件分岐を行う事を思いつき下記コードを作成。
|
44
45
|
|
46
|
+
2番目に作成したコード
|
45
47
|
try:
|
46
|
-
if
|
48
|
+
if Pandasデータフレーム1["カラム名1"] != "AAA":
|
47
|
-
if
|
49
|
+
if Pandasデータフレーム2 >= 0:
|
48
|
-
|
50
|
+
Pandasデータフレーム3=Pandasデータフレーム1.copy()
|
49
|
-
|
51
|
+
Pandasデータフレーム3.loc[:,'カラム名4']=datetime.datetime.now()
|
50
|
-
|
52
|
+
Pandasデータフレーム3.loc[:,'カラム名3']=''
|
51
|
-
|
53
|
+
Pandasデータフレーム3.loc[:,'カラム名2']=''
|
52
|
-
|
54
|
+
Pandasデータフレーム3.loc[:,'カラム名1']='AAA'
|
53
|
-
|
55
|
+
Pandasデータフレーム3
|
54
|
-
|
56
|
+
Pandasデータフレーム0=Pandasデータフレーム0.append(Pandasデータフレーム3, ignore_index = True)
|
55
|
-
elif
|
57
|
+
elif Pandasデータフレーム4 >= 0:
|
56
|
-
|
58
|
+
Pandasデータフレーム5=Pandasデータフレーム1.copy()
|
57
|
-
|
59
|
+
Pandasデータフレーム5.loc[:,'カラム名5']=1
|
58
|
-
|
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
|
-
|
69
|
+
その後、どんなエラーが出ているのか調べる為、エラーが出てたらそのエラー内容をプリントするというコードを見つけ内容を確認しました。
|
70
|
-
|
71
|
-
初心者中の初心者な質問で申し訳ありませんがよろしくお願い致します。
|
72
|
-
質問も初なもので、何か不手際がありましたら指摘していただけるとありがたいです。
|
73
70
|
|
74
71
|
|
75
72
|
### 補足情報(FW/ツールのバージョンなど)
|