Python 是否可以让遮罩忽略所有非数值?
'我试图屏蔽数据帧中的值,但在数据帧中引入字符串时出错 我的目标是获取任何小于1的值并将其转换为NaN。我不希望将字符串转换为NaN(因为字符串不能小于1) 我只需使用以下命令: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
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)