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

R语言按条件拆分数值型数据集列的实现方法

基于Pandas实现数据列拆分方案

处理逻辑

针对amt列的不同场景,按以下规则拆分:

  • 若amt是4位且以"00"结尾的数值:将其除以100的结果存入item列,item2列留空(NA)
  • 若amt是非NA的普通数值:将原数值存入item2列,item列留空(NA)
  • 若amt本身是NA:item和item2均留空(NA)

代码实现

import pandas as pd
import numpy as np

# 构造示例数据集
data = {
    'amt': [9200, np.nan, 4300, 35, 6300, np.nan, 871, 200, 300, 239, 8700]
}
df = pd.DataFrame(data)

# 生成item列:匹配4位以00结尾的数值,提取前两位(等价于除以100)
df['item'] = np.where(
    df['amt'].astype(str).str.match(r'^\d{2}00$'),
    df['amt'] // 100,
    np.nan
)

# 生成item2列:非NA且不满足item条件的数值,保留原数
df['item2'] = np.where(
    df['amt'].notna() & ~df['amt'].astype(str).str.match(r'^\d{2}00$'),
    df['amt'],
    np.nan
)

# 查看最终结果
print(df)

代码说明

  1. 正则匹配:用str.match(r'^\d{2}00$')精准筛选4位且末尾为00的数值,^\d{2}限定开头为两位数字,00$限定结尾为00
  2. 条件赋值:通过np.where实现分支逻辑,满足条件时赋值对应结果,否则赋值NA
  3. 类型兼容:将amt转为字符串后再做正则匹配,避免数值类型的格式干扰

运行代码后即可得到你需要的目标输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 14:03:20