为什么即使在调用 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 C536379154 C536383235 C536391236 C536391237 C536391 ... 470612 576618470614 576618470616 576618470618 576618470673 576618Name: ID, Length: 7892, dtype: object为什么所有这些不以字母开头的数字仍然存在于 non_numeric 数组中?起初我以为这是由于前导空格造成的,但后来我添加了 strip() 并且没有任何改变。编辑:我需要分析系列中的非数值,所以我试图提取它们。
1 回答
慕神8447489
TA贡献1780条经验 获得超1个赞
看看您最新的编辑,我相信这就是您想要做的:
“编辑:我需要分析系列中的非数值,因此我正在尝试提取它们。”
如果只看字符串,有很多方法。这是一个。用于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
添加回答
举报
0/150
提交
取消