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

j2cgzkjk  于 2022-10-23  发布在  其他
关注(0)|答案(1)|浏览(148)

我正在尝试使用.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。

sycxhyv7

sycxhyv71#

对于过滤需要bolean系列,如果选中所有列,则获取布尔 Dataframe :
因此,如果需要测试每行是否至少有一个True使用DataFrame.any,如果需要,如果每行所有True都使用i1j 1k1l:

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

相关问题