Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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_Dataframe - Fatal编程技术网

Python 是否可以让遮罩忽略所有非数值?

Python 是否可以让遮罩忽略所有非数值?,python,pandas,dataframe,Python,Pandas,Dataframe,'我试图屏蔽数据帧中的值,但在数据帧中引入字符串时出错 我的目标是获取任何小于1的值并将其转换为NaN。我不希望将字符串转换为NaN(因为字符串不能小于1) 我只需使用以下命令: df=df.mask(df.lt(1)) 但是我得到了这个错误- TypeError:“好吧,我们可以通过dtypes进行筛选,只更改那些列: 已编辑 df1=pd.DataFrame({“A”:[“鲍勃”、“玛丽”、“约翰”、“保罗”、“克里斯”], “B”:[5,2,54,3,2], “C”:[20,16,7,3

'我试图屏蔽数据帧中的值,但在数据帧中引入字符串时出错

我的目标是获取任何小于1的值并将其转换为NaN。我不希望将字符串转换为NaN(因为字符串不能小于1)

我只需使用以下命令:

df=df.mask(df.lt(1))
但是我得到了这个错误-


TypeError:“好吧,我们可以通过
dtypes
进行筛选,只更改那些列:

已编辑

df1=pd.DataFrame({“A”:[“鲍勃”、“玛丽”、“约翰”、“保罗”、“克里斯”],
“B”:[5,2,54,3,2],
“C”:[20,16,7,3,8],
“D”:[14,3,17,2,6]})
cols=df1。选择数据类型(包括=['number'])。列
df1[cols]=df1[cols]。掩码(df1[cols]<19)
df1

另一种选择是,
cols=df1.columns[[i代表i,j在enumerate(df1.dtypes.tolist())中代表x在[np.dtype('float64')、np.dtype('int64')]中,如果j==x]
也有效

谢谢,在我的示例中,我还需要浮点,我尝试了这个-data=data\u name\u frame-->34 cols=data.columns[data.dtypes==['int64','float64']]并得到了相同的错误。实际上,如果我运行它,也会得到相同的错误。cols=df1.columns[df1.dtypes==['float64','int64']]
import pandas as pd 

# intialise data of lists. 
df = pd.DataFrame({"A":[12, 4, 5, 44, 1], 
                   "B":[5, 2, 54, 3, 2], 
                   "C":[20, 16, 7, 3, 8], 
                   "D":[14, 3, 17, 2, 6]}) 
df = df.mask(df.lt(19)) 
print(df)
# result
#       A     B     C   D
# 0   NaN   NaN  20.0 NaN
# 1   NaN   NaN   NaN NaN
# 2   NaN  54.0   NaN NaN
# 3  44.0   NaN   NaN NaN
# 4   NaN   NaN   NaN NaN

df1 = pd.DataFrame({"A":["Bob", "Mary", "John", "Paul", "Chris"], 
                   "B":[5, 2, 54, 3, 2], 
                   "C":[20, 16, 7, 3, 8], 
                   "D":[14, 3, 17, 2, 6]}) 
df1 = df1.mask(df1.lt(19)) 
print(df1)