我在熊猫中有以下数据框

 ID      description      log
 1       104              motherboardsrno123
 2       104              displaysrno456
 3       107              1234
 4       108              53455
 5       104              pulsersrno2333
 6       108              53456
 7       109              NA


我只想保留描述104中包含“母亲”或“脉冲”的那些行

以下是我想要的数据框

ID      description      log
 1       104              motherboardsrno123
 3       107              1234
 4       108              53455
 5       104              pulsersrno2333
 6       108              53456
 7       109              NA


我正在熊猫后面

   df= df[(df.log.str.contains("mother|pulsar",na=True)) and (df.description == '104')]


但这没有给我所需的输出。

最佳答案

似乎您需要将第二个字符串更改为pulser,将and更改为&进行按位AND,并在必要时按整数104比较(不是字符串'104',但取决于数据):

df = df[(df.log.str.contains("mother|pulser", na=True)) & (df.description == 104)]
print (df)
   ID  description                 log
0   1          104  motherboardsrno123
4   5          104      pulsersrno2333


对于您的预期输出-获取mother or pulser或不获取104

df= df[(df.log.str.contains("mother|pulser", na=True)) | (df.description != 104)]

print (df)
   ID  description                 log
0   1          104  motherboardsrno123
2   3          107                1234
3   4          108               53455
4   5          104      pulsersrno2333
5   6          108               53456
6   7          109                 NaN

关于python - 如何在某些条件下在 Pandas 中放行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54534615/

10-12 23:35