質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1972閲覧

ValueError python エラーの解決策を教えていただきたいです。

Mario_11

総合スコア95

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/01/26 04:45

計算の比較をしたかったのですがエラーが出てしまい解決策が分からす質問させていただきました

python

1path = "8254.csv" 2df = pd.read_csv(path) 3df.index = pd.to_datetime(df["Date"]) 4 5volume = df['Volume'].dropna() 6close = df['Adj Close'].dropna() 7date = df['Date'].dropna() 8 9def Bollinger(df,window=25): 10 11 bband = pd.DataFrame() 12 bband['close'] = df['Adj Close'] 13 bband['ma'] = df['Adj Close'].rolling(window=20).mean() 14 bband['sigma'] = df['Adj Close'].rolling(window=20).std() 15 bband['ma+2sigma'] = bband['ma'] + (bband['sigma'] * 2) 16 bband['ma-2sigma'] = bband['ma'] - (bband['sigma'] * 2) 17 bband['ma+3sigma'] = bband['ma'] + (bband['sigma'] * 3) 18 bband['ma-3sigma'] = bband['ma'] - (bband['sigma'] * 3) 19 bband["diffplus"] = bband.close - bband["ma+2sigma"] 20 bband["diffminus"] = bband["ma-2sigma"] - bband.close 21 s_up = bband[bband["diffplus"]>0]["close"] 22 s_down = bband[bband["diffminus"]>0]["close"] 23 24 if bband["ma-2sigma"] > df['Adj Close']: 25 print(bband["ma-2sigma"][-1:]) 26 27 if bband["ma-3sigma"][-1:] > df['Adj Close'][-1:]: 28 print(bband["ma-3sigma"][-1:]) 29Bollinger(df,window=25) 30

エラーの内容

error

1ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

python

1if bband["ma-2sigma"] > df['Adj Close']: 2#を 3if bband["ma-2sigma"] > bband['close']: 4#にしても同じエラーが出ました。

データの中身はこんな感じです。

data

1Date Open High Low Close Adj Close Volume 22015-01-21 750.000000 750.000000 750.000000 750.000000 750.000000 4700 32015-01-22 750.000000 760.000000 740.000000 750.000000 750.000000 11600 42015-01-23 750.000000 760.000000 750.000000 750.000000 750.000000 9900 52015-01-26 740.000000 760.000000 740.000000 750.000000 750.000000 10000 6... 72015-01-21 750.000000 750.000000 750.000000 750.000000 750.000000 4700 82015-01-22 750.000000 760.000000 740.000000 750.000000 750.000000 11600 92015-01-23 750.000000 760.000000 750.000000 750.000000 750.000000 9900 102015-01-26 740.000000 760.000000 740.000000 750.000000 750.000000 10000

他に必要な物があれば追記いたします。
わかる方いれば教えていください、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

提示の比較文では、複数の要素の大小を比較した結果、複数の真偽値が得られます。
しかしif文はひとつの真偽結果しか判断できません。つまり、すべて真ならなのかいずれか真ならなのかが分からないよ、という意味で提示エラーが出ています。
よって、コード作成者は自身の意図に従って.all()なり.any()なりを呼び出すことにより一つの真偽値を指定してやる必要があります。
なお過去の同様質問The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). のエラーにへの回答も一読ください。

以下、単純な動作検証コードです。

Python

1import pandas as pd 2 3df = pd.DataFrame({'v1':[1,2],'v2':[3,4],'v3':[5,1]}) 4print(df) 5 6v12 = df['v1'] < df['v2'] 7v13 = df['v1'] < df['v3'] 8 9print( v12) 10#0 True 11#1 True 12 13print( v13) 14#0 True 15#1 False 16 17# ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all( 18#if v12: 19# pass 20 21print(v12.any()) # True 22print(v12.all()) # True 23print(v13.any()) # True 24print(v13.all()) # False

投稿2020/01/26 05:11

can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問