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

2024-07-03 04:29:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了下面这样的代码,从名为“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')] 

我只是想知道是否有一个有效的方法来编写代码,给我相同的输出

提前谢谢


Tags: 方法代码type记录分类documentloccc
2条回答

我想你需要^{}~倒过来的条件:

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)]

相关问题 更多 >