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