Python 以非数字序列显示的数值

Python 以非数字序列显示的数值,python,pandas,jupyter-lab,Python,Pandas,Jupyter Lab,为什么即使在调用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

为什么即使在调用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
为什么所有这些数字都不以非数字数组中的字母开头?

起初我以为这是由于前面的空格,但后来我添加了strip(),没有任何变化


编辑:我需要分析序列中的非数值,因此我正在尝试提取它们。

查看您最近的编辑,我相信这就是您要做的:

“编辑:我需要分析序列中的非数值,因此我正在尝试提取它们。”

只看字符串,有很多方法。这里有一个。使用
pd.to\u numeric()
创建一个系列
s
并传递
errors='concurve'
。这将返回非数值数据的
NaN
值。使用
isnull()
,将其作为过滤器传递给该系列的
NaN
行的数据帧:


因为
str.strip
只去除空白?这看起来像是一个大问题。您到底想做什么?您仍然需要将dataframe列转换为所需的格式。即使我有所有的数字,我仍然可以创建一个字符串数据类型的列。Pandas不会自动更改列的数据类型,除非您明确告诉它(读取数据除外,Pandas将自动检测数据类型)。此外,列中的字符串带有ltters
C
,因此无法转换为int或float之类的数字数据类型。确切地说,576618的前面或结尾没有空格。为什么它最终会变成非数字系列?@DavidErickson我不需要原始数据帧的转换,我需要看看哪些值没有让熊猫推断出系列的数字值。所以我过滤掉了非数值的数据,对它们进行分析,并给它们一个惊喜!非数字系列中有数值无法复制,无法与[code>['C536379'、'C536383'、'C536391'、C536391'、'C536391'、'576618'、'576618'、'576618'、'576618']组成系列。-理解识别数字项。
s = pd.to_numeric(df['ID'], errors='coerce')
df = df[s.isnull()]
df

    ID
141 C536379
154 C536383
235 C536391
236 C536391
237 C536391