python - 如果行的内容包含特定的子字符串,如何排除 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 |
|---------------------|--------------|
解决方案
你可以做:
cols = df.apply(lambda x: x.str.contains('is').any())
df.loc[:, ~cols]
输出:
B
Value Green
12 Warm