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

pandas DataFrame如何删除或替换指定列指定索引范围的数值

问题原因

你之前的写法存在两处错误:

  • 同时指定了columns=['B']参数,会直接删除整个B列,不符合只修改局部数值的需求
  • index参数接收的是行的索引标签,你传入的[8,9,10]是B列的数值而非行索引,无法定位到目标行
实现方案

pandas为结构化二维表格,不支持单独删除某列的部分单元格(会导致表格结构错位),如果要移除目标数值,通常替换为NaN即可,以下是两种常见实现方式:

方式1:按行索引定位(B列行索引2~4)

使用loc定位到目标区域直接赋值即可:

import pandas as pd
import numpy as np

# 构造示例DataFrame
df = pd.DataFrame({
    'A': [1,2,3,4,5],
    'B': [6,7,8,9,10],
    'C': [11,12,13,14,15]
})

# 替换B列行索引2到4的值为NaN
df.loc[2:4, 'B'] = np.nan

运行后输出结果:

A    B   C
0  1  6.0  11
1  2  7.0  12
2  3  NaN  13
3  4  NaN  14
4  5  NaN  15

方式2:按目标数值匹配(值为8/9/10就替换)

如果不需要固定行索引,只要B列数值在目标列表中就替换,可以用isin匹配:

df.loc[df['B'].isin([8,9,10]), 'B'] = np.nan

运行效果和方式1完全一致。

扩展:删除对应行

如果你需要删除B列包含目标数值的整行数据,可以使用如下写法:

df = df.drop(df[df['B'].isin([8,9,10])].index)

运行后输出结果:

A  B   C
0  1  6  11
1  2  7  12

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:06:06