如何使用Pandas将指定列特定行范围的数据替换为NaN
Pandas指定列指定行范围替换为NaN实现方案
原代码问题说明
iris['petal_length'].between(10,17)的作用是判断petal_length列的数值是否处于1017的区间,完全不符合选择第1017行的需求replace('NaN')写法错误:字符串格式的'NaN'不会被Pandas识别为空值,正确的空值对象为np.nan
完整正确实现代码
首先导入依赖库、加载数据集:
import pandas as pd import numpy as np url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data' # 原数据集无表头,手动指定对应列名 iris = pd.read_csv(url, names=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class'])
替换核心代码(两种写法二选一即可)
- 基于iloc的位置索引写法
# iloc行范围为左闭右开,第10~17行对应索引区间10:18,petal_length列的位置索引为2 iris.iloc[10:18, 2] = np.nan
- 基于loc的标签写法(可读性更高)
# 默认整数索引场景下,loc的行范围为左闭右闭,直接写10:17即可匹配第10~17行 iris.loc[10:17, 'petal_length'] = np.nan
结果验证
执行以下代码即可查看替换后的效果:
iris.iloc[10:18]
内容的提问来源于stack exchange,提问作者Emily Cullen
相关产品推荐
相关产品推荐

