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

如何从Pandas DataFrame的Sport列删除多行冬季项目数据

解决方法

你之前用drop()出错的核心原因是没指定要基于Sport列来筛选删除行,drop()默认是按行/列的标签(索引)操作,不是直接识别列值。另外inplace=True时不需要把结果赋值给新变量,它会直接修改原DataFrame,赋值后得到的会是None。

给你两种可行的实现方式:

方法一:布尔索引筛选(推荐)

直接筛选出Sport列不属于冬季项目的行,逻辑直观且不易出错:

# 定义要排除的冬季项目列表
winter_sports = ["luge", "curling", "speed skating", "skeleton bob", "ski jump", "cross country skiing", "bobsleigh"]
# 筛选出Sport不在列表内的行,生成新DataFrame
newdf = df[~df["Sport"].isin(winter_sports)]

这里~表示取反,isin()用来判断列值是否存在于指定列表中。

方法二:正确使用drop()函数

如果一定要用drop(),需要先定位到冬季项目对应的行索引,再执行删除:

winter_sports = ["luge", "curling", "speed skating", "skeleton bob", "ski jump", "cross country skiing", "bobsleigh"]
# 获取要删除的行索引
drop_indices = df[df["Sport"].isin(winter_sports)].index
# 删除对应行,生成新DataFrame
newdf = df.drop(drop_indices, axis=0)
# 若想直接修改原DataFrame(不推荐,易误改原始数据):
# df.drop(drop_indices, axis=0, inplace=True)

另外你之前写的["sport":"luge", ...]是错误语法,列表中不能用冒号关联列名和值,这种写法也无法让Pandas识别你要操作的是Sport列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 00:27:08