Python实现:提取INT64类型数据至新列,字符串类型设为NaN
问题与解决方案
问题说明
现有表格Test的Work_Experience列数据如下:
1 2 3 4 3 Month 4 months 5 Month
需求:新增一列IntOnly,仅保留原列中整数类型的前4个值,其余字符串类型的行显示NaN。
尝试过的错误代码及报错
- 代码1:
Test['IntOnly'] = Test['Work_Experience'].select_dtypes(include='number')
报错信息:'Series' object has no attribute 'select_dtypes'
- 代码2:
IntOnly=[] for i in Test.Work_Experience: if Test[i].dtype == 'int64': IntOnly.append(i)
报错信息:Key Error : 1
期望输出
Work_Experience IntOnly 1 1 2 2 3 3 4 4 3 Month NaN 4 months NaN 5 Month NaN
正确解决方案
代码实现
import pandas as pd # 遍历列内每个值,判断是否为整数类型 Test['IntOnly'] = Test['Work_Experience'].apply( lambda x: x if isinstance(x, int) else pd.NA )
错误原因说明
- 第一段代码错误:
select_dtypes是DataFrame专属方法,不能直接用于Series对象,因此触发属性不存在的报错。 - 第二段代码错误:循环变量
i是列的取值(如1、"3 Month"),用Test[i]会把i当成列名去索引表格,自然找不到对应列,触发KeyError。
代码逻辑解释
通过apply遍历Work_Experience列的每一个值,用isinstance(x, int)判断当前值是否为整数类型:
- 是整数则保留原值
- 非整数则赋值为
pd.NA(与NaN等价)
运行后即可得到符合期望的输出结果。
内容的提问来源于stack exchange,提问作者RajatKapoor350
相关产品推荐
相关产品推荐

