Python 使用loc或iloc编写过滤数据的多个条件的有效方法

Python 使用loc或iloc编写过滤数据的多个条件的有效方法,python,pandas,loc,Python,Pandas,Loc,我编写了如下代码,以从名为“Document Type”的列中筛选出记录,该列包含大约25个分类值 salesdf.loc[(salesdf['Document type'] != 'AVC') & (salesdf['Document type'] != 'CC') & (salesdf['Document type'] != 'CDI') & (salesdf['Document type'] != 'BSX') & (salesdf['Documen

我编写了如下代码,以从名为“Document Type”的列中筛选出记录,该列包含大约25个分类值

salesdf.loc[(salesdf['Document type'] != 'AVC') & 
(salesdf['Document type'] != 'CC') & 
(salesdf['Document type'] != 'CDI') & 
(salesdf['Document type'] != 'BSX') & 
(salesdf['Document type'] != 'BTR') & 
(salesdf['Document type'] != 'FAF')] 
我只是想知道是否有一种有效的方法来编写代码,使我获得相同的输出

提前谢谢

我想你需要用
~
:

salesdf[~salesdf['Document type'].isin(['AVC', 'CC','CDI', 'BSX','BTR','FAF'])]
样本

salesdf = pd.DataFrame({
    'Document type': ['AVC','CDI','CC','a','b','FAF','BTR','c','BSX']
})
print (salesdf)
  Document type
0           AVC
1           CDI
2            CC
3             a
4             b
5           FAF
6           BTR
7             c
8           BSX

a = salesdf.loc[(salesdf['Document type'] != 'AVC') & 
(salesdf['Document type'] != 'CC') & 
(salesdf['Document type'] != 'CDI') & 
(salesdf['Document type'] != 'BSX') & 
(salesdf['Document type'] != 'BTR') & 
(salesdf['Document type'] != 'FAF')] 

print (a)
  Document type
3             a
4             b
7             c

b = salesdf[~salesdf['Document type'].isin(['AVC', 'CC','CDI', 'BSX','BTR','FAF'])]
print (b)
  Document type
3             a
4             b
7             c
我想您需要使用
~
:

salesdf[~salesdf['Document type'].isin(['AVC', 'CC','CDI', 'BSX','BTR','FAF'])]
样本

salesdf = pd.DataFrame({
    'Document type': ['AVC','CDI','CC','a','b','FAF','BTR','c','BSX']
})
print (salesdf)
  Document type
0           AVC
1           CDI
2            CC
3             a
4             b
5           FAF
6           BTR
7             c
8           BSX

a = salesdf.loc[(salesdf['Document type'] != 'AVC') & 
(salesdf['Document type'] != 'CC') & 
(salesdf['Document type'] != 'CDI') & 
(salesdf['Document type'] != 'BSX') & 
(salesdf['Document type'] != 'BTR') & 
(salesdf['Document type'] != 'FAF')] 

print (a)
  Document type
3             a
4             b
7             c

b = salesdf[~salesdf['Document type'].isin(['AVC', 'CC','CDI', 'BSX','BTR','FAF'])]
print (b)
  Document type
3             a
4             b
7             c
我将使用
.isin()
和否定:

toIgnore = ['AVC', 'CC', 'CDI', 'BSX', 'BTR', 'FAF']
salesdf[~salesdf['Document type'].isin(toIgnore)]
我将使用
.isin()
和否定:

toIgnore = ['AVC', 'CC', 'CDI', 'BSX', 'BTR', 'FAF']
salesdf[~salesdf['Document type'].isin(toIgnore)]

如果它已经按照您的预期工作,您可以将其发布到。谢谢,@user202729。我不知道。以后将使用它。如果它已经按照您的预期工作,您可以将其发布到。谢谢,@user202729。我不知道。你打字太快了:)谢谢。这就是我想知道的!代码中的~是否表示不等于?@vishnuprashanth-否,它表示反转掩码-
[True,False,True]
更改为
[False,True,False]
啊。。你太快了。这也回答了我的问题。非常感谢@jezrael@vishnuprashanth只是一个逻辑否定:首先,对于满足条件的每一行,您都会得到True,并且,由于您实际上想排除它们,所以您在前面加了一个
而不是
,您键入得太快了:)谢谢。这就是我想知道的!代码中的~是否表示不等于?@vishnuprashanth-否,它表示反转掩码-
[True,False,True]
更改为
[False,True,False]
啊。。你太快了。这也回答了我的问题。非常感谢@jezrael@vishnuprashanth只是一个逻辑否定:首先,对于满足条件的每一行,都是真的,并且,当您确实想要排除它们时,您在frontWorks中放置了一个
NOT
,这是完美的!!这个方法让我有了更好的理解。再次感谢:)非常好用!!这个方法让我有了更好的理解。再次感谢:)