多条件熊猫的动态过滤

时间:2015-11-23 01:36:34

标签: 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      20      21      33

我需要摆脱不带全部三个整数的行,让我们说1,3& 10.在这种情况下,每个整数的顺序(无论是出现在column1还是column2中)都将被忽略。

有关如何进行此过滤的任何想法吗?

修改

从这个数据框中只保留项目代码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

1 个答案:

答案 0 :(得分:0)

您可以使用isinany pandas数据框方法来完成此操作:

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

修改

如果你需要匹配它们,你可以尝试使用sum方法:

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

<强> EDIT2

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

... StiMvcMobileDesigner("StiMvcMobileViewer1", new StiMvcMobileDesignerOptions()