Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 忽略非数值_Python_Pandas - Fatal编程技术网

Python 忽略非数值

Python 忽略非数值,python,pandas,Python,Pandas,我有这个df: X 0 13500 1 13600 2 BBOX-001 3 Mobi-1 4 15003 5 15004 我正在尝试输入一个新列。如果x>15000,则该值为A,否则为B。如果x为非数字(BBOX-001,Mobi-1),则应在x列中显示该值: X Y 0 13500 B 1 13600 B 2 BBOX-001 BBOX-001 3 Mobi-1 Mobi-1 4 1500

我有这个df:

     X
0   13500
1   13600
2   BBOX-001
3   Mobi-1
4   15003
5   15004
我正在尝试输入一个新列。如果x>15000,则该值为A,否则为B。如果x为非数字(BBOX-001,Mobi-1),则应在x列中显示该值:

     X        Y
0   13500     B
1   13600     B
2   BBOX-001  BBOX-001
3   Mobi-1    Mobi-1
4   15003     A
5   15004     A
我在下面有这一点,但如何忽略列X中的非数值

df['Y'] = np.where(df['X'] > 15000, 'A', 'B')

您可以通过
转换对象
实现您的目标:

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': ['13500', '13600', 'BBOX-001', 'Mobi-1', '15003', '15004']})
# Convert only numeric value to put it in comparison
df['Y'] = np.where(df.X.convert_objects(convert_numeric=True) > 15000, 'A', 'B')

print (df)
输出:

         X  Y
0     13500  B
1     13600  B
2  BBOX-001  B
3    Mobi-1  B
4     15003  A
5     15004  A

df['X']
混合包含数字和字符串时,列的数据类型将是
object
,而不是数字数据类型。
df['X']
中类似数字的项目可能是整数或浮点数,甚至可能是字符串(您的问题不清楚)。 在这种情况下,许多数值操作(如
df['X']>15000
)可能会产生错误

若要将类似数字的值视为数字,请使用
pd。若要将列转换为数字数据类型,请使用\u numeric

In [41]: numeric_X = pd.to_numeric(df['X'], errors='coerce')
In [43]: numeric_X
Out[43]: 
0    13500.0
1    13600.0
2        NaN
3        NaN
4    15003.0
5    15004.0
Name: X, dtype: float64
您还可以通过测试NAN来识别类似字符串的值:

is_stringlike = np.isnan(numeric_X)

屈服

          X         Y
0     13500         B
1     13600         B
2  BBOX-001  BBOX-001
3    Mobi-1    Mobi-1
4     15003         A
5     15004         A
          X         Y
0     13500         B
1     13600         B
2  BBOX-001  BBOX-001
3    Mobi-1    Mobi-1
4     15003         A
5     15004         A