如何在Pandas中筛选包含指定字符串‘abc’的DataFrame列?
嘿,这问题不难,我给你分两种常见情况来解答,你按需选就行:
情况1:筛选**列名里包含'abc'**的列,返回列名列表
这是最常见的需求,两种简单方法搞定:
- 方法一:用列表推导式,直观好懂,新手也能快速理解:
abc_cols = [col for col in df.columns if 'abc' in col]
原理就是遍历所有列名,把包含'abc'的列名挑出来放进列表。
- 方法二:用Pandas自带的
str.contains,更简洁高效,适合列很多的场景:
abc_cols = df.columns[df.columns.str.contains('abc')].tolist()
这里df.columns是索引对象,支持字符串方法,str.contains('abc')会返回一个布尔数组,用它过滤列名后转成列表就行。
情况2:筛选列内容里存在包含'abc'的元素的列,返回列名列表
如果你的需求是找那些列里至少有一个单元格的值带'abc'的列,那可以这么做:
- 方法一:用
apply遍历每一列检查:
abc_cols = df.columns[df.apply(lambda col: col.astype(str).str.contains('abc').any())].tolist()
这里先把列转成字符串类型(避免非字符串列报错),然后检查该列是否有任意一个元素包含'abc',最后筛选出符合条件的列名。
- 方法二:矢量化操作,效率更高(大数据集推荐用这个):
abc_cols = df.columns[(df.astype(str).str.contains('abc')).any(axis=0)].tolist()
先把整个DataFrame转成字符串,然后逐列检查是否有匹配的元素,最后提取列名。
举个例子,就像你说的示例里如果Field1列有值包含'abc',那用情况2的方法就能得到['Field1']啦。
内容的提问来源于stack exchange,提问作者user3476463
相关产品推荐
相关产品推荐

