首页 > 解决方案 > 熊猫数值出现在非数字系列中

问题描述

为什么即使在调用 str.strip 之后数值仍被视为非数值?

这是我的情况:

df['ID'] = df['ID'].str.strip()
id = df['ID']
indices = [ i for (i, v) in enumerate(id.str.isnumeric()) if v == False ]
non_numeric = id.filter(indices)
id.head(-5)

And this is the output of id.head(-5):
141       C536379
154       C536383
235       C536391
236       C536391
237       C536391
           ...   
470612     576618
470614     576618
470616     576618
470618     576618
470673     576618
Name: ID, Length: 7892, dtype: object

为什么所有那些不以字母开头的数字仍在 non_numeric 数组中?

起初我认为这是由于前导空白,但后来我添加了 strip() 并没有任何改变。

编辑:我需要分析系列中的非数值,所以我试图提取它们。

标签: pythonpandasjupyter-lab

解决方案


查看您的最新编辑,我相信这就是您正在尝试做的事情:

“编辑:我需要分析系列中的非数值,所以我试图提取它们。”

只看字符串,有很多方法。这是一个。用于pd.to_numeric()创建系列s并通过errors='coerce'. 这将返回NaN非数字数据的值。从那里将其作为过滤器传递给您的数据框,用于该NaN系列的行,使用isnull()

s = pd.to_numeric(df['ID'], errors='coerce')
df = df[s.isnull()]
df

    ID
141 C536379
154 C536383
235 C536391
236 C536391
237 C536391

推荐阅读