【问题标题】:Error in python: 'bitwise_and' not supported for the input types,python中的错误:输入类型不支持'bitwise_and',
【发布时间】:2021-11-08 20:49:06
【问题描述】:

我收到一个错误 - TypeError: ufunc 'bitwise_and' not supported for the input types, and the input can not be safe to force to any supported types based on cast rule ''safe when running a simple loop . 如何纠正?

for i in range(0,df.shape[0]+1):
if(df.iloc[i,8] >= 90):
    df.iloc[i,9]="Ex"
elif (df.iloc[i,8] >= 80 & df.iloc[i,8] <90):
    df.iloc[i,9]="A"
elif(df.iloc[i,8] >= 70 & df.iloc[i,8] <80):
    df.iloc[i,9]="B"
elif(df.iloc[i,8] >= 60 & df.iloc[i,8] <70):
    df.iloc[i,9]="C"
elif(df.iloc[i,8] >= 50 & df.iloc[i,8] <60):
    df.iloc[i,9]="D"
else:
    df.iloc[i,9]="E"
    

【问题讨论】:

    标签: python pandas dataframe for-loop if-statement


    【解决方案1】:

    我假设您正在尝试 AND 布尔值?这是运算符优先级的问题。按位 AND 的优先级高于比较运算符,因此您的代码首先尝试执行 70 &amp; df.iloc[i,8],这取决于存储在 df 中的类型,这将是一个问题

    【讨论】:

      【解决方案2】:

      抱歉,我解决了这个问题。只需分配括号。

      for i in range(0,df.shape[0]+1):
      if(df.iloc[i,8] >= 90):
          df.iloc[i,9]="Ex"
      elif ((df.iloc[i,8] >= 80) & (df.iloc[i,8] <90)):
          df.iloc[i,9]="A"
      elif((df.iloc[i,8] >= 70) & (df.iloc[i,8] <80)):
          df.iloc[i,9]="B"
      elif((df.iloc[i,8] >= 60) & (df.iloc[i,8] <70)):
          df.iloc[i,9]="C"
      elif((df.iloc[i,8] >= 50) & (df.iloc[i,8] <60)):
          df.iloc[i,9]="D"
      else:
          df.iloc[i,9]="E"
      

      【讨论】:

        猜你喜欢
        • 2023-03-30
        • 2018-07-25
        • 2022-12-17
        • 2021-01-20
        • 2018-09-24
        • 1970-01-01
        • 2021-06-05
        • 2017-04-10
        相关资源
        最近更新 更多