作为
@MadPhysicist
国家,熊猫系列单身
dtype
. 但是
数据类型
object
这意味着任何事情都会发生。你会输的
具有数字
数据类型
但这可能是你想要的。
NaN
df.apply(pd.to_numeric, errors='coerce')
0 1
0 3.0 1.0
1 NaN NaN
注:
apply
遍历每个列并将该列传递给
callable
那是给的。这意味着每一列都得到了这样的处理:
pd.to_numeric(one_of_the_columns, errors='coerce')
使用
errors='coerce'
np.nan
否则。
使用
数据类型
对象和丢弃效率。。。不管你想做什么
df = df.applymap(lambda x: pd.to_numeric(x, errors='ignore'))
df
0 1
0 3 1
1 r s
3
要获得数字,请尝试:
df.applymap(type)
0 1
0 <class 'numpy.int64'> <class 'numpy.int64'>
1 <class 'str'> <class 'str'>
注:
applymap
遍历每个
细胞
并通过
通过。在这种情况下,每个细胞的处理方式如下:
pd.to_numeric(one_particular_cell, errors='ignore')
这是低效的,但做你想要的。当Pandas试图协调您所造成的损害时,它意识到某些列中存在混合类型,并更改了
数据类型
对象
为了适应。