繁体   English   中英

如何基于多列的正则表达式从数据框中选择行

[英]How to select rows from dataframe based on regex of multiple columns

我正在尝试从数据框df中选择行,其中字符串值不在列col1col2

我只能在一列上执行以下操作:

df_clean = df[df["col1"].str.contains('thisstring|thatstring', na=False, case=False)==False]

但是,如果我可以这样做会更好:

df_clean = df[df["col1","col2"].str.contains('thisstring|thatstring', na=False, case=False)==False]

可能吗? 否则,我必须使用顶部代码中的df_clean并再次对col2运行它并保存到另一个变量中。

采用:

df = pd.DataFrame({'col1':['thisstring dd','thisstring ff','ee'],
                   'col2':['s thatstring','ddd','sds']})

如果需要将.str函数应用于DataFrameDataFrame apply应用于boolean DataFrame并使用any来检查每行至少一个True

f = lambda x: x.str.contains('thisstring|thatstring', na=False, case=False)
df_clean = df[~df[["col1","col2"]].apply(f).any(axis=1)]
print (df_clean)
  col1 col2
2   ee  sds

最简单的方法是将一列添加到另一列,然后通过False使用~来比较布尔布尔掩码:

s = df["col1"] + ' ' + df["col2"]
df_clean = df[~s.str.contains('thisstring|thatstring', na=False, case=False)]
print (df_clean)
  col1 col2
2   ee  sds

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM