首页 > 解决方案 > 计算数值列 Pandas 中的字符串值

问题描述

我有一个数据框:

    Name    Hours_Worked
1   James   3
2   Sam     2.5
3   Billy   T
4   Sarah   A
5   Felix   5

第一个我如何计算我有非数字值的行数?

第二如何过滤以识别包含非数字值的行?

标签: python-3.xpandasdata-cleaning

解决方案


使用to_numericwitherrors='coerce'将非数字转换为NaNs 并通过以下方式创建掩码isna

mask = pd.to_numeric(df['Hours_Worked'], errors='coerce').isna()
#oldier pandas versions
#mask = pd.to_numeric(df['Hours_Worked'], errors='coerce').isnull()    

然后按以下方式计算Trues 值sum

a = mask.sum()
print (a)
2

并过滤boolean indexing

df1 = df[mask]
print (df1)
    Name Hours_Worked
3  Billy            T
4  Sarah            A

详情

print (mask)
1    False
2    False
3     True
4     True
5    False
Name: Hours_Worked, dtype: bool

检查数字的另一种方法:

def check_num(x):
    try:
        float(x)
        return False        
    except ValueError:
        return True

mask = df['Hours_Worked'].apply(check_num)

推荐阅读