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

如何用Python Pandas实现当Age=1时删除指定条件的行?

解决方法

你写的代码逻辑有误,把所有条件用|(或)连接后,会删掉所有Age==1、Medal>20、Height<10或Weight<50的行,这和需求不符。需求是仅当Age等于1时,删除其中满足Medal>20、Height<10或Weight<50的行,也就是要保留:

  • 所有Age≠1的行
  • Age==1但同时不满足三个删除条件的行

下面是两种正确的实现方式:

方法1:直接筛选保留的行(推荐,更高效)

# 保留Age≠1的行,或者Age=1但不满足三个删除条件的行
df = df[~((df['Age'] == 1) & ((df['Medal'] > 20) | (df['Height'] < 10) | (df['Weight'] < 50)))]

解释:

  • (df['Age'] == 1) & ((df['Medal'] > 20) | (df['Height'] < 10) | (df['Weight'] < 50)) 定位到需要删除的行
  • 前面加~取反,就是需要保留的行

方法2:使用drop方法

# 先找到需要删除的行索引,再删除
drop_indices = df.loc[((df['Age'] == 1) & ((df['Medal'] > 20) | (df['Height'] < 10) | (df['Weight'] < 50)))].index
df = df.drop(drop_indices)

解释:

  • 先筛选出Age==1且满足任一删除条件的行,获取它们的索引
  • 用drop方法删除这些索引对应的行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:17:23