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

基于部分字符串将DataFrame单元格值替换为NaN的问题

问题解决方法

报错原因

你直接对DataFrame调用.str.contains()导致报错,因为str是Pandas单列(Series)的专属属性,DataFrame没有这个方法。

正确实现代码

方法一:逐列生成布尔掩码替换

import pandas as pd
import numpy as np

# 复制原DataFrame,避免修改原始数据
df2 = df.copy()
# 对第3列及以后的每一列,生成包含"--"的布尔掩码
mask = df2.iloc[:, 2:].apply(lambda col: col.str.contains("--", na=False))
# 用掩码将对应单元格替换为NaN
df2.iloc[:, 2:] = df2.iloc[:, 2:].mask(mask)
  • na=False:确保原有的NaN值不会被误判为符合条件,保留原始NaN状态。
  • df.copy():生成独立的新DataFrame,避免影响原数据。

方法二:逐单元格精准判断替换

如果需要先确认单元格为字符串类型再检查内容,可用:

df2 = df.copy()
# 定位第3列及以后的文本列
text_columns = df2.columns[2:]
df2[text_columns] = df2[text_columns].applymap(
    lambda x: np.nan if isinstance(x, str) and "--" in x else x
)

这个方法会跳过非字符串类型的单元格(比如原始NaN),只处理有效文本内容。

验证数据类型

处理后可检查前两列是否保持整数类型:

print(df2.iloc[:, :2].dtypes)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:45:36