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

如何移除字符串指定位置字符?解决Pandas处理Patient_ID返回NaN问题

解决方案:修复Patient_ID字符串处理返回NaN的问题

问题原因

你使用str.slice_replace时参数传递错误:pandas的slice_replace方法需要指定start、stop和repl三个参数(或前两个为整数位置参数),你传入的slice_replace(5,'')将第二个参数设为字符串'',导致参数类型不匹配,最终返回NaN。

正确实现代码

目标是将0100001转为010001,本质是移除第6个字符(0-based索引为5),以下两种方式都可以实现:

方式一:使用正确的slice_replace参数

# 先处理空值并统一转为字符串类型
f2['Patient_ID'] = f2['Patient_ID'].fillna('').astype(str)
# 移除索引5到6之间的单个字符
f2['Patient_ID'] = f2['Patient_ID'].str.slice_replace(start=5, stop=6, repl='')
f2.head()

方式二:直接字符串切片拼接(更直观不易出错)

f2['Patient_ID'] = f2['Patient_ID'].fillna('').astype(str)
# 取前5位字符 + 从第6位开始的剩余字符
f2['Patient_ID'] = f2['Patient_ID'].str[:5] + f2['Patient_ID'].str[6:]
f2.head()

可选:针对固定长度ID的过滤处理

如果数据中存在不同长度的ID,可先筛选出长度为7的ID再修改,避免误处理其他格式的ID:

f2['Patient_ID'] = f2['Patient_ID'].fillna('').astype(str)
# 仅处理长度为7的Patient_ID
mask = f2['Patient_ID'].str.len() == 7
f2.loc[mask, 'Patient_ID'] = f2.loc[mask, 'Patient_ID'].str[:5] + f2.loc[mask, 'Patient_ID'].str[6:]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:20:39