Python 多条件下的动态滤波
我的数据框架有5列,10k行,所有数据都是整数。数据帧如下所示: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
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如果您更新您的答案并附上数据帧的示例,那就更好了