Python 以非数字序列显示的数值
为什么即使在调用str.strip之后,数值也被视为非数值 这就是我的情况: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
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将自动检测数据类型)。此外,列中的字符串带有lttersC
,因此无法转换为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