pandas 数值显示在非数字系列中

为什么即使在调用 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() 并且没有任何改变。


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


幕布斯6054654
浏览 100回答 1
1回答

慕神8447489

看看您最新的编辑,我相信这就是您想要做的:“编辑:我需要分析系列中的非数值,因此我正在尝试提取它们。”如果只看字符串,有很多方法。这是一个。用于pd.to_numeric()创建系列s并传递errors='coerce'。这将返回NaN非数字数据的值。从那里将其作为过滤器传递到NaN该系列行的数据帧,使用isnull():s = pd.to_numeric(df['ID'], errors='coerce')df = df[s.isnull()]df    ID141 C536379154 C536383235 C536391236 C536391237 C536391
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python