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

如何用Pandas根据薪资列是否为整数填充DataFrame的status列

解决方法

针对你的需求,根据薪资列的不同数据类型,提供对应的处理方案:

场景1:薪资列是字符串类型(存在6LKH这类非数字内容)

直接利用字符串的isdigit()方法判断是否为纯数字字符串,结果直接赋值给status列:

import pandas as pd

# 示例数据
df = pd.DataFrame({
    '员工姓名': ['张三', '李四', '王五'],
    '薪资': ['10000', '6LKH', '8500'],
    'status': [None, None, None]
})

# 填充status列
df['status'] = df['薪资'].str.isdigit()

str.isdigit()会返回布尔值:纯数字字符串返回True,含非数字字符返回False。如果需要兼容负数格式(如'-5000'),可以先过滤负号再判断:

df['status'] = df['薪资'].apply(lambda x: x.lstrip('-').isdigit() if isinstance(x, str) else False)

场景2:薪资列是数值类型(如float,存在5000.0这类整数值)

需要判断数值是否为整数(小数部分为0),两种实现方式:

方法A:使用is_integer()方法

df['status'] = df['薪资'].apply(lambda x: x.is_integer() if pd.notna(x) else False)

方法B:取模运算判断

import numpy as np
df['status'] = np.mod(df['薪资'], 1) == 0

两种方法都会将5000.0识别为整数(返回True),5000.5返回False。

通用兼容方案(混合类型场景)

如果薪资列同时存在字符串和数值类型,统一转为字符串后再判断:

df['status'] = df['薪资'].astype(str).str.lstrip('-').isdigit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 01:20:00