首页 > 解决方案 > 如果行的内容包含特定的子字符串,如何排除 Daraframe 中的列?

问题描述

这个问题涉及到我面临的问题。但是,如果特定的子字符串匹配,我想排除列,而不是根据精确的字符串匹配排除列。

例如,在下图中,我想过滤掉列 A 和 C,因为它们包含子字符串 'is'

我将如何继续这样做?我替换df.loc[:, ~(df == 'Salty').any()]了@cs95 的回答,df.loc[:, ~(re.findall('/\w+(?:is)\w+/', df)).any()]但这给了我一个

TypeError: expected string or bytes-like object

任何帮助,将不胜感激!

输入

|---------------------|------------------|----------------|----------|
|                     |         A        |          B     |   C      |
|---------------------|------------------|----------------|----------|
|          Value      |        Red       |    Green       |Blue      |
|---------------------|------------------|----------------|----------|
|          12         |  HotisGood       |    Warm        |isGood    |
|---------------------|------------------|----------------|----------|

输出

|---------------------|--------------|
|                     |        B     |   
|---------------------|--------------|
|          Value      |   Green      |
|---------------------|--------------|
|          12         |  Warm        |
|---------------------|--------------|

标签: pythonregexpandas

解决方案


你可以做:

cols = df.apply(lambda x: x.str.contains('is').any())
df.loc[:, ~cols]

输出:

           B
Value  Green
12      Warm

推荐阅读