如何计算条件为假 Pandas 的行数?

How to count rows where condition is false Pandas?

我有一个 NUM 列,我尝试过滤列 NUM 有效(真)且:

的行
  1. 更新当前数据框
  2. 向字典中插入错误行的计数report

我试试这个:

report["NUM"] =  dataset['NUM'].apply(~isValid).count()

所以,它对我不起作用。 数据框是:

NUM AGE COUNTRY
1   18  USA
2   19  USA
3   30  AU

isValid是函数

def isValid(value):
   return True

备注:

我使用这个规则:

report["NUM"] =  (~dataset['NUM'].apply(checkNumber)).sum()

我收到这个错误:

  report["NUM"] =  (~dataset['NUM'].apply(luhn)).sum()
C:\Users\Oleh\AppData\Local\Temp\ipykernel_1728478582562.py:2: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

如果要统计isValid输出False的行数:

(~dataset['NUM'].apply(isValid)).sum()

输出:0

编辑

m = dataset['NUM'].apply(isValid)
report["NUM"] = (~m).sum()
dataset2 = dataset[m]
def isValid(value):
   return True

my_df = pd.DataFrame({'NUM':[1,2,3], 'AGE':[18,19,20], 'COUNTRY':['USA','USA','AU']})

report = {'wrong_rows':(~my_df.NUM.apply(isValid)).sum()}

你需要

dataset[dataset['NUM'].map(isValid) == False].count()

因为

dataset['NUM'].apply(~isValid) 

完全错了。

isValid 是一个函数,~isValid 就像不是 isValid,我猜它的计算结果为 False?我不确定。

还有

dataset[col].apply(func) 

将 return 整个数据集的每一行的值都由函数 return 编辑。如果你想过滤掉错误的,你需要

 df[df[col]==True] 

语法。如果你有一个新专栏说

df["valid"] =  dataset[col].map(func)

然后你可以做

df.query("valid is False")

或类似的东西