2017-06-16 2 views
1
for Country in energy: 
    if energy[Country] == 'United States': 

これは、energyと呼ばれるパンダでDataFrameをトラバースしています。エネルギーはすべての国がアルファベット順に国を列としてリストされています。 df energyの文を書き出すと常にValueErrorが返されますが、を返す場合はとなります。ValueError:Seriesの真理値はあいまいです。 a.empty、a.bool()、a.item()、a.any()またはa.all()を使用します。文字列比較の場合

--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-61-e820508b0b91> in <module>() 
    20 
    21  return energy 
---> 22 answer_one() 

<ipython-input-61-e820508b0b91> in answer_one() 
    16 
    17  for Country in energy: 
---> 18   if energy[Country] == 'United States': 
    19    return 
    20 

/opt/conda/lib/python3.5/site-packages/pandas/core/generic.py in __nonzero__(self) 
    890   raise ValueError("The truth value of a {0} is ambiguous. " 
    891       "Use a.empty, a.bool(), a.item(), a.any() or a.all()." 
--> 892       .format(self.__class__.__name__)) 
    893 
    894  __bool__ = __nonzero__ 

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

質問にデータへのリンクを入れてはいけません。質問にサンプルを入れてください。未知の外部リンクをクリックする人はいません。 – Ding

+0

あなたは全体のエラートレース – depperm

+0

@Ding申し訳ありません最初の投稿を与えることができます、そのリンクは、DataFrameの構造のイメージに行く。 – veridian

答えて

0

試してみるてください:

{ 
a = energy[Country] == 'United States' 
    if a.any(): # if any one is Ture, return True' 
    if a.all(): # if the all is Ture, return True. else,return False' 
} 

多分それはあなたを助けることができます。

0

おそらくif Country == 'United States':で、if energy[Country] == 'United States':ではありません。後者は、 '米国'列の値を '米国'という文字列と比較します(そして系列を返します)。

関連する問題