数据帧上的 Panadas 条件返回类型错误:'str' 和'int'实例之间不支持'>'



我正在使用pandas处理数据框,我需要根据某些条件添加一个新列。

我的数据框是:

discount   tax   total   subtotal   productid
  3         0     20       13        002
  10        3     106      94        003
  46.49     6     21       20        004

我需要在添加一个名为 class 的新列时应用一些条件。

条件如下:如果discount > 20 & total > 100 & tax == 0,则 class 应该是 1 否则应该是 0

这是我尝试的方式:

def conditions(s):
    if (s['discount'] > 20) and (s['tax'] == 0) and (s['total'] > 100):
        return 1
    else:
        return 0
df_full['Class'] = df_full.apply(conditions, axis=1)

,但它返回一个错误,为:

typeError :("'>'在'str'和int'"的实例之间不支持','','''in index 18'(

如何解决此问题?

请帮助我!

预先感谢!

我建议创建布尔面膜并将其施加到 intTrue s为 1 s,而 False s为 0 s,也将 and更改为 CC_7,对于bitwise AND

>
print (df_full)
   discount  tax  total  subtotal productid
0      3.00    0     20        13       002
1     40.00    0    106        94       003
2     46.49    6     21        20       004

您还可以检查所有非数字值:

print(df_full[pd.to_numeric(df_full['discount'], errors='coerce').isnull()]
#for convert to numeric - non numeric are convert to `NaN`s
df_full['discount'] = pd.to_numeric(df_full['discount'], errors='coerce')

df_full['Class'] = ((df_full['discount'] > 20) & 
                    (df_full['tax'] == 0) & 
                    (df_full['total'] > 100)).astype(int)
print (df_full)
   discount  tax  total  subtotal productid  Class
0      3.00    0     20        13       002      0
1     40.00    0    106        94       003      1
2     46.49    6     21        20       004      0

相关内容

最新更新