如何筛选保留单元格含指定字符串的DataFrame列?
Pandas 按单元格内容筛选列的实现方案
核心需求为筛选保留**任意单元格包含指定字符串other**的列,直接用pandas内置方法即可实现,无需复杂逻辑。
最简实现代码
假设你的原始DataFrame命名为df,筛选代码如下:
target_str = "other" # 保留所有包含目标字符串的列 df = df.loc[:, df.apply(lambda col: col.astype(str).str.contains(target_str).any())]
代码说明
df.apply(lambda col: ...):遍历DataFrame的每一列做判断astype(str):将列内所有元素转为字符串,避免非字符串类型(数字、空值等)导致匹配报错str.contains(target_str):检查每个单元格是否包含目标字符串any():只要该列存在任意一个符合条件的单元格,就判定该列需要保留- 如果需要忽略大小写匹配,可以在
str.contains里加参数case=False
示例验证
针对你给出的四列测试场景,我们可以用以下代码验证效果:
import pandas as pd # 构造符合你描述的测试数据 df = pd.DataFrame({ "A": ["test1", "other", "test3"], "B": ["other", "test2", "test3"], "C": ["test1", "test2", "test3"], "D": ["test1", "test2", "other"] }) # 执行筛选 target_str = "other" df_filtered = df.loc[:, df.apply(lambda col: col.astype(str).str.contains(target_str).any())] # 输出筛选后的列名,结果为 ['A', 'B', 'D'],符合预期 print(df_filtered.columns.tolist())
内容的提问来源于stack exchange,提问作者RoryH
相关产品推荐
相关产品推荐

