【问题标题】:Why am I getting ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()为什么我会收到 ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
【发布时间】:2020-04-08 13:29:55
【问题描述】:

以下代码给出了值错误:

major_males=[]

for row in recent_grads:
    if recent_grads['Men']>recent_grads['Women']:
        major_males.append(recent_grads['Major'])
display(major_males)  

ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

【问题讨论】:

    标签: python pandas dataframe filtering


    【解决方案1】:

    那是因为您正在比较一个系列而不是一个值。 我猜你的意图是if row['Men'] > row['Women']

    其次这样做会更有效率

    
    major_males = recent_grads[recent_grads.Men > recent_grads.Women].Major.to_list()
    

    【讨论】:

      【解决方案2】:

      如果 recent_grads 是一个数据框,那么这就是你的 for 循环的样子

      major_males=[]
      
      for i, row in recent_grads.iterrows():
          if row['Men']>row['Women']:
              major_males.append(row['Major'])
      display(major_males)  
      

      【讨论】:

        【解决方案3】:

        请注意,当您遍历数据框时,您并没有使用 row 变量。相反,请尝试:

        major_males=[]
        
        for row in recent_grads:
            if row['Men']>row['Women']:
                major_males.append(row['Major'])
        display(major_males)  
        

        您收到错误是因为将所有 Men 值与所有 Women 值进行比较没有意义:相反,您想一次比较每个值的一个特定值,这就是更改的作用。

        【讨论】:

        • 试过但得到:TypeError: string indices must be integers
        • 我认为他错过了.iterrows() 部分。
        猜你喜欢
        • 2016-12-01
        • 2019-01-24
        • 2020-05-27
        • 1970-01-01
        • 2021-03-21
        • 2021-05-27
        • 2021-04-07
        • 2022-12-29
        • 2018-07-09
        相关资源
        最近更新 更多