[英]Select rows from a DataFrame based on values in a MULTIPLE columns in pandas
[英]How to select rows from dataframe based on regex of multiple columns
我正在尝试从数据框df
中选择行,其中字符串值不在列col1
或col2
。
我只能在一列上执行以下操作:
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
函数应用于DataFrame
, DataFrame
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.