首页 > 解决方案 > python字符串包含并且字符串等于

问题描述

我有这个需要翻译成 python 的 r 代码。所以对于grepl,我会使用str.contains,但我可以在同一行添加str等于吗?基本上,你会怎么用一句话来表达?

rank <- subset(rankings, grepl("o",type) | grepl("v",type) | grepl("fs",type) 
                   | type == "kp" |  type == "paa" | type == "tb" | type== "ts, thumb")

标签: pythonrgrepl

解决方案


一种方法是使用带有joinlist模式|,在contains“类型”列中使用它,或者 ( |)isin在元素列表上使用固定字符串匹配

rankings[(rankings['type'].isin(['kp', 'paa', 'tb', 'ts, thumb'])) |
          (rankings['type'].str.contains("|".join(["v", "fs", "o"])))] 

-输出

#   type
#0  kp
#2  paa
#3  tb
#5  ts, thumb
#7  v1
#8  fs2
#9  orange

R中,OP 的代码可以简化为

subset(rankings, grepl("o|v|fs", type)| 
             type %in% c("kp", "paa", "tb", "ts, thumb"))

数据

import pandas as pd
rankings = pd.DataFrame({"type":["kp", "5g", "paa", "tb", "ta", "ts, thumb", "ta1", "v1", "fs2", "orange", "efz"]})

推荐阅读