Python 多条件下的动态滤波

Python 多条件下的动态滤波,python,pandas,Python,Pandas,我的数据框架有5列,10k行,所有数据都是整数。数据帧如下所示: Item_code# Column1 Column2 Column3 Column4 Column5 02516 3 1 10 21 7 03382 23 12 4 5 31 05921 20 3 1 11 25 82433 3 12

我的数据框架有5列,10k行,所有数据都是整数。数据帧如下所示:

Item_code#  Column1 Column2 Column3 Column4 Column5
02516       3       1       10      21      7
03382       23      12      4       5       31
05921       20      3       1       11      25
82433       3       12      20      21      33
我需要去掉不带全部三个整数的行,比如说1,3和10。在这种情况下,将忽略每个整数的顺序,无论它出现在第1列还是第2列中

你知道怎么做这个过滤吗

编辑

在此数据框中,仅保留项目代码02516、04599和85345:

Item_code#  Column1  Column2  Column3  Column4  Column5
2516        3        1        10       21       7
3382        23       12       4        5        31
5921        20       3        1        11       25
82433       3        12       20       21       33
1455        1        1        3        25       6
4599        3        10       15       1        21
85345       0        1        3        3        10
您可以使用和dataframe方法执行此操作:

import pandas as pd
from io import StringIO

data = """
Item_code#  Column1 Column2    Column3    Column4    Column5
02516       3       1       10      21      7
03382       23      12      4       5       31
05921       20      3       1       11      25
82433       3       12      20      21      33
"""

df = pd.read_csv(StringIO(data), sep='\s+')
match_list = [1, 3, 10]
df1 = df[df.isin(match_list).any(axis=1)]
print(df1)

   Item_code#  Column1  Column2  Column3  Column4  Column5
0        2516        3        1       10       21        7
2        5921       20        3        1       11       25
3       82433        3       12       20       21       33
编辑

如果您需要将它们全部匹配,您可以尝试使用总和法:

df1 = df[df.isin(match_list).sum(axis=1) == len(match_list)]

print(df1)
Item_code#  Column1  Column2  Column3  Column4  Column5
0        2516        3        1       10       21        7
EDIT2

对于您的编辑,您可以执行以下操作:

data = """
Item_code#  Column1 Column2 Column3 Column4 Column5 
02516 3 1 10  21  7 
03382 23  12  4 5 31 
05921  20 3  1 11  25 
82433  3 12  20  21  33 
01455  1 1 3 25  6 
04599 3 10  15  1 21 
85345  0 1 3 3 10
"""
df = pd.read_csv(StringIO(data), sep='\s+')

match_list = [1, 3, 10]
df1 = df[df.isin(match_list).sum(axis=1) >= len(match_list)]

In [26]: print(df1)
   Item_code#  Column1  Column2  Column3  Column4  Column5
0        2516        3        1       10       21        7
4        1455        1        1        3       25        6
5        4599        3       10       15        1       21
6       85345        0        1        3        3       10

我看到这个脚本过滤掉包含一个或两个或所有给定整数的行。我需要在同一行中包含所有三个给定整数的行。Anton我想我没有提到我的问题,我的数据在其列中可以有多个相同的整数-假设它在第2列和第4列上都有整数3。不幸的是,编辑的版本不适用于此目的。@SmoothTravel能否提供适当的数据框示例?项目代码#列1列2列3列4列5 02516 3 1 10 7 03382 23 12 4 5 31 05921 20 3 11 82433 12 20 21 33 01455 1 1 3 25 6 04599 3 10 1 21 85345 0 1 3 10仅来自此数据框的带有项目的行代码0251604599和85345将被保留。@SmoothTravel如果您更新您的答案并附上数据帧的示例,那就更好了