You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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
)

错误原因说明

  1. 第一段代码错误:select_dtypes是DataFrame专属方法,不能直接用于Series对象,因此触发属性不存在的报错。
  2. 第二段代码错误:循环变量i是列的取值(如1、"3 Month"),用Test[i]会把i当成列名去索引表格,自然找不到对应列,触发KeyError。

代码逻辑解释

通过apply遍历Work_Experience列的每一个值,用isinstance(x, int)判断当前值是否为整数类型:

  • 是整数则保留原值
  • 非整数则赋值为pd.NA(与NaN等价)

运行后即可得到符合期望的输出结果。

内容的提问来源于stack exchange,提问作者RajatKapoor350

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:01:16