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

使用pandas.DataFrame.isin方法删除含指定值行未达预期

解决pandas用isin删除含指定值行的问题

你当前的代码之所以没删除行,反而把不匹配的单元格换成NaN,是因为直接用df[df.isin([0,2])]是按单元格筛选,而不是按行筛选。布尔DataFrame作为索引时,只会保留对应单元格为True的值,False的单元格就变成NaN,不会删除整行。

要实现删除至少包含一个[0,2]中值的行,需要先判断每行是否存在匹配值,再筛选出完全不匹配的行:

import pandas as pd
df = pd.DataFrame({'num_legs': [2, 4], 'num_wings': [2, 0]}, index=['falcon', 'dog'])
print("原DataFrame:")
print(df)

# 先判断每行是否有元素在[0,2]中,取反后筛选行
filtered_df = df[~df.isin([0, 2]).any(axis=1)]
print("\n删除含0或2的行后:")
print(filtered_df)

代码解释:

  • df.isin([0,2]):生成和原DataFrame形状相同的布尔表,每个单元格标记是否等于0或2
  • .any(axis=1):按行判断,只要该行有一个True(即存在目标值),就返回True
  • ~:对布尔结果取反,得到“该行完全没有0或2”的行索引
  • 用这个索引筛选原DataFrame,就得到了删除目标行后的结果

你的示例中两行都包含0或2,所以最终结果会是一个空的DataFrame。

内容的提问来源于stack exchange,提问作者FluidMechanics Potential Flows

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:20:37