如何在Pandas中实现R语言as.numeric()的强制类型转换效果?
解决方案
你可以使用pandas内置的pd.to_numeric()函数实现需求,将参数errors设置为'coerce',即可在遇到无法转换为数值的内容时,自动将对应位置赋值为NaN,和R中as.numeric()的效果完全一致。
代码示例
import pandas as pd df = pd.DataFrame({'id':[1,2,3], 'age':['12', 'not_an_age', '34 and a half']}) # 执行转换,转换失败自动设为NaN df['age'] = pd.to_numeric(df['age'], errors='coerce') print(df)
输出结果如下:
id age 0 1 12.0 1 2 NaN 2 3 NaN
可选:转换为可空整数类型
默认转换得到的列是float类型(因为原生Python int不支持空值),如果你需要保留整数类型同时支持空值,可以转换为pandas的可空整数类型Int64(注意首字母大写):
df['age'] = df['age'].astype('Int64') print(df)
对应输出:
id age 0 1 12 1 2 <NA> 2 3 <NA>
内容的提问来源于stack exchange,提问作者dcurrie27
相关产品推荐
相关产品推荐

