以下のようなコードを書きました。
python
1print(hl) 2print(dfb) 3print(dfv) 4dfv2 = dfv.copy().astype(str) 5for c in xps_block2.columns: 6 for i in dfv[1:].index: 7 if dfb[c][i]: 8 dfv2[c][i]='-' 9 elif dfv[c][i]<hl['L]: 10 dfv2[c][i]='dn' 11 elif dfv[c][i]>hl['H']: 12 dfv2[c][i]='up' 13 else: 14 dfv2[c][i]='-' 15print(dfv2)
output
1 H L 2r1 2.15 1.88 3r2 2.17 1.93 4r3 2.09 1.75 5r4 2.22 1.95 6r5 2.21 1.81 7 8 c1 c2 c3 c4 c5 c6 9r1 true true false false true true 10r2 true true false true true true 11r3 true true true false true true 12r4 true true true true true true 13r5 true true true true true false 14 15 c1 c2 c3 c4 c5 c6 16r0 520 234 411 199 800 375 17r1 2.0 1.9 2.2 2.1 2.5 1.5 18r2 1.8 2.4 2.1 2.0 2.1 1.6 19r3 2.0 1.7 2.1 1.8 1.7 1.5 20r4 2.2 2.0 2.5 2.1 2.0 2.2 21r5 1.9 1.8 1.6 2.3 2.4 2.3 22 23elif dfv[c][i]<hl['L']: 24 File "~/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py", line 1330, in __nonzero__ 25 f"The truth value of a {type(self).__name__} is ambiguous. " 26ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
本来は1行目がr0で、2行目以降が
dfbがFalseでかつdfvの値がhl['H']より大きい要素が'up'、dfbがFalseでかつdfvの値がhl['L']より小さい要素が'dn'、他が'-'のデータフレームを作成したいのですが、
上記のようなエラーが出てしまいます。検索しても条件式を and や or で結んだ場合にでるエラーということで、該当しているようには思えません。
またエラーとはおそらく関係ありませんが、2重for文でなくとも書けるのではという気もしています。
どうしたら良いでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/07 02:32