如何将包含整数、NaN和字符串的列转换为仅含整数与NaN的列
解决方案
可以使用 pandas 的 pd.to_numeric() 函数结合可空整数类型来实现需求,具体步骤如下:
代码实现
import pandas as pd # 定义原始 DataFrame df = pd.DataFrame({ 'name': ['John','Mary', 'Phil', 'Sue', 'Robert', 'Lucy', 'Blake'], 'age': ['15', '20s', 37, 'teen', '', 'elderly', 57] }) # 转换 age 列:无法转为数字的内容替换为 NaN,再转为支持 NaN 的整数类型 df['age'] = pd.to_numeric(df['age'], errors='coerce').astype('Int64') print(df)
代码说明
pd.to_numeric(df['age'], errors='coerce'):该函数会尝试将age列的每个元素转换为数值类型,转换失败的元素(如带字母的字符串、空值)会被强制替换为NaN。.astype('Int64'):由于普通整数类型(int64)无法存储NaN,这里使用 pandas 的可空整数类型Int64(大写开头),既保留整数类型,又能兼容NaN值。
执行结果
name age 0 John 15 1 Mary <NA> 2 Phil 37 3 Sue <NA> 4 Robert <NA> 5 Lucy <NA> 6 Blake 57
内容的提问来源于stack exchange,提问作者equanimity
相关产品推荐
相关产品推荐

