如何基于多列正则表达式从dataframe中选择行

2024-09-29 19:34:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从数据帧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运行它并保存到另一个变量中。你知道吗


Tags: 数据字符串代码cleanfalsedfcol2col1
1条回答
网友
1楼 · 发布于 2024-09-29 19:34:44

用途:

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

如果需要将.str函数应用于DataFrame,请使用^{}for boolean DataFrame^{}检查每行至少一个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

相关问题 更多 >

    热门问题