Pandas 使用python删除基于条件的行

Pandas 使用python删除基于条件的行,pandas,Pandas,这只是一个虚拟数据,实际数据有9000多行 目标是删除Desc列中带有wit(Rev)的所有行,并删除与Desc列中带有wit(Rev)匹配的Ref\u ID行。预期结果的索引为 0,2,3,6,8,9,10,11 注意:使用drop_duplicate将删除错误的索引10、11。删除行时使用的标识符应为Desc或Ref_ID dfA=pd.DataFrame({'Name':['ada','john','Jane','james','cain','mary','luke','samuel','

这只是一个虚拟数据,实际数据有9000多行

目标是删除Desc列中带有
wit(Rev)
的所有行,并删除与Desc列中带有
wit(Rev)
匹配的
Ref\u ID
行。预期结果的索引为

0,2,3,6,8,9,10,11

注意:使用drop_duplicate将删除错误的索引10、11。删除行时使用的标识符应为Desc或Ref_ID

dfA=pd.DataFrame({'Name':['ada','john','Jane','james','cain','mary','luke','samuel','moses','paris','moses','moses','john','Godwin','mary','fouring'],
“年龄”:[10,20,30,40,23,33,56,32,12,45,12,12,20,23,70,50],
“参考ID:[234567598765424567235、2345867、09098880765461240986、1022022、3203323706755432033233203323876542809098880765461020222],
‘描述’:[‘智慧’、‘智慧’、‘智慧’、‘智慧’、‘智慧’、‘智慧’、‘智慧’、‘智慧’、‘智慧’、‘智慧’、‘智慧’、‘智慧(修订)’、‘智慧(修订)’、‘智慧(修订)’、‘智慧(修订)’等],
列=['Name'、'Age'、'Ref_ID'、'Desc'])

我不确定您的代码是什么,但索引为10,11的行的问题可能是因为这些行中Desc列的值是小写字母“wit”,而其他列中的该值是“wit”,您可能是根据“wit”值而不是“wit”进行比较的

#matches数组给出Desc列中那些行的索引,值为“Wit(Rev)”
匹配项=[]
matches=dfA.index[dfA['Desc']='Wit(Rev').tolist()
#Ref_id存储应删除的Ref_id列的Ref_id
Ref_id=[]
对于比赛中的我:
Ref_ID.append(dfA.iloc[i]['Ref_ID'])
dfA[dfA.isin({'Ref\u ID':Ref\u ID})['Ref\u ID']==False]
最后一行首先检查列
Ref\u ID
是否在
Ref\u ID
数组中有任何值,然后

dfA.isin({'Ref\u ID':Ref\u ID})['Ref\u ID']
返回一列FalseTrue值,当值不在Ref\u ID中时,此列为False,并且我们确实需要其
Ref\u ID
值不在Ref\u ID中的数据集行。输出为:

Name Age Ref\u ID Desc
0 ada 10 2345675 Wit
1约翰20 9876542机智
2简30 4567235
3詹姆斯40 2345867
4该隐2390988
6路加福音56 1240986
8摩西12 3203323智慧
9巴黎457067554
10摩西12 3203323智慧
11摩西12 3203323智慧