Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用或如果elif(筛选行)显示包含多个关键字的记录_Python_Pandas_Numpy_Dataframe - Fatal编程技术网

Python 使用或如果elif(筛选行)显示包含多个关键字的记录

Python 使用或如果elif(筛选行)显示包含多个关键字的记录,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我试图显示包含一组关键字的行 这张桌子看起来像这样 Col0 col1 col2 col3 1 LD AN CC 2 AB LD SS BB 1 AA LD AD CC 3 LD AC NN 2 FF UH BB 我想要的是过滤这个表,其中行包含两个字符串(LD和AB)或(

我试图显示包含一组关键字的行

这张桌子看起来像这样

Col0     col1      col2     col3
1         LD        AN       CC
2         AB      LD SS      BB
1         AA      LD AD      CC
3         LD        AC       NN
2         FF        UH       BB
我想要的是过滤这个表,其中行包含两个字符串(LD和AB)或(LD和AD)或(AC)

所以我得到了这个结果

Col0     col1      col2     col3
2         AB      LD SS      BB
1         AA      LD AD      CC
3         LD        AC       NN
我试过了

count = df.groupby(['Col0','Col3'])['Col3'].transform('size')
s = df['Col1'] + ' ---- ' + df['Col2'] 

#The condition function 
df = df[count.isin([1,2]) (s.str.contains('LD') & s.str.contains('AB')) | (s.str.contains('LD') & s.str.contains('AD')) | (s.str.contains('LD') & s.str.contains('AC'))]
这显然不起作用,所以我尝试使用if函数:

if s.str.contains('L/D') & s.str.contains('AB'):
   df = df[count.eq(2)]
elif s.str.contains('L/D') & s.str.contains('AD'):
    df = df[count.eq(2)]
elif s.str.contains('L/D') & s.str.contains('AC'):
    df = df[count.eq(2)]
用这个

if 'L/D' & 'AB' in s:
    df = df[count.eq(2)]
elif 'L/D' & 'AD' in s:
    df = df[count.eq(2)]
elif 'L/D' & 'AC' in s:
    df = df[count.eq(2)]
他们没有工作

那么,有人能帮我解决我犯的错误吗

df = df[count.isin([1,2]) (s.str.contains('LD') & s.str.contains('AB'))
        | (s.str.contains('LD') & s.str.contains('AD'))
        | (s.str.contains('LD') & s.str.contains('AC'))]
包含语法错误,因为
count
。删除它,您将获得预期的结果:

df = df[(s.str.contains('LD') & s.str.contains('AB'))
        | (s.str.contains('LD') & s.str.contains('AD'))
        | (s.str.contains('LD') & s.str.contains('AC'))]
给予:

   Col0 Col1   Col2 Col3
1     2   AB  LD SS   BB
2     1   AA  LD AD   CC
3     3   LD     AC   NN