用.isin pandas删除给定列表中至少有一个单元格具有值的行.DataFrame方法



我正在尝试使用.isin方法,但没有预期的结果。

以下是一个可重复性最小的示例

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

它不会删除行,而是用NaN替换单元格。

对于过滤需要bolean系列,如果选中所有列,则获取布尔DataFrame:

所以如果需要测试每行是否至少有一个True使用DataFrame.any,如果需要测试是否每行所有True都使用DataFrame.all:

print (df.isin([0, 2]))
num_legs  num_wings
falcon      True       True
dog        False       True
print (df.isin([0, 2]).any(axis=1))
falcon    True
dog       True
dtype: bool
print (df.isin([0, 2]).all(axis=1))
falcon     True
dog       False
dtype: bool
print(df[df.isin([0, 2]).any(axis=1)])
num_legs  num_wings
falcon         2          2
dog            4          0
print(df[df.isin([0, 2]).all(axis=1)])
num_legs  num_wings
falcon         2          2

相关内容

  • 没有找到相关文章

最新更新