我正在尝试使用.isin方法,但没有预期的结果。下面是一个最小的可重复示例
.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。
sycxhyv71#
对于过滤需要bolean系列,如果选中所有列,则获取布尔 Dataframe :因此,如果需要测试每行是否至少有一个True使用DataFrame.any,如果需要,如果每行所有True都使用i1j 1k1l:
DataFrame.any
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
1条答案
按热度按时间sycxhyv71#
对于过滤需要bolean系列,如果选中所有列,则获取布尔 Dataframe :
因此,如果需要测试每行是否至少有一个True使用
DataFrame.any
,如果需要,如果每行所有True都使用i1j 1k1l: