计算数字列中的字符串值 Pandas
Count String Values in a Numeric Column Pandas
我有一个数据框:
Name Hours_Worked
1 James 3
2 Sam 2.5
3 Billy T
4 Sarah A
5 Felix 5
1st 如何计算我有非数字值的行数?
2 如何过滤以识别包含非数字值的行?
使用to_numeric
with errors='coerce'
for convert non numeric to NaN
s and create mask by isna
:
mask = pd.to_numeric(df['Hours_Worked'], errors='coerce').isna()
#oldier pandas versions
#mask = pd.to_numeric(df['Hours_Worked'], errors='coerce').isnull()
然后计算 True
s 个值 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)
一天结束时,我这样做是为了评估数字列中的字符串:
df['Hr_String'] = pd.to_numeric(df['Hours_Worked'], errors='coerce')
我想把它放在一个新的专栏中,这样我就可以过滤并为我提供更多的流畅性:
df[df['Hr_String'].isnull()]
它returns:
Name Hours_Worked Hr_String
2 Billy T NaN
3 Sarah A NaN
然后我做了
df['Hr_String'].isnull().sum()
它returns:
2
然后我想要总行数的百分比,所以我这样做了:
teststr['Hr_String'].isnull().sum() / teststr.shape[0]
它returns:
0.4
总的来说,这种方法对我有用,它帮助我了解哪些字符串值干扰了我的数字列,并允许我查看百分比,如果它真的很小,我可能会删除行以进行分析。如果百分比很大,我将不得不弄清楚我是否可以归因于它们或为它们找出其他东西。
我有一个数据框:
Name Hours_Worked
1 James 3
2 Sam 2.5
3 Billy T
4 Sarah A
5 Felix 5
1st 如何计算我有非数字值的行数?
2 如何过滤以识别包含非数字值的行?
使用to_numeric
with errors='coerce'
for convert non numeric to NaN
s and create mask by isna
:
mask = pd.to_numeric(df['Hours_Worked'], errors='coerce').isna()
#oldier pandas versions
#mask = pd.to_numeric(df['Hours_Worked'], errors='coerce').isnull()
然后计算 True
s 个值 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)
一天结束时,我这样做是为了评估数字列中的字符串:
df['Hr_String'] = pd.to_numeric(df['Hours_Worked'], errors='coerce')
我想把它放在一个新的专栏中,这样我就可以过滤并为我提供更多的流畅性:
df[df['Hr_String'].isnull()]
它returns:
Name Hours_Worked Hr_String
2 Billy T NaN
3 Sarah A NaN
然后我做了
df['Hr_String'].isnull().sum()
它returns:
2
然后我想要总行数的百分比,所以我这样做了:
teststr['Hr_String'].isnull().sum() / teststr.shape[0]
它returns:
0.4
总的来说,这种方法对我有用,它帮助我了解哪些字符串值干扰了我的数字列,并允许我查看百分比,如果它真的很小,我可能会删除行以进行分析。如果百分比很大,我将不得不弄清楚我是否可以归因于它们或为它们找出其他东西。