在Python及Pandas中提取含指定子串的字符串(一行实现)
纯Python与Pandas的简洁实现方案
一、纯Python一行实现(列表推导式)
这是最贴合Python风格的写法,用列表推导式直接完成过滤:
x = ["2023_jan05", "2023_jan_27", "2023_feb04", "2023_feb05", "2024_feb05"] must_contain = "feb05" desired_output = [s for s in x if must_contain in s]
如果需要同时生成原数组对应的布尔索引(对应你原代码里的indices_bool),同样可以用一行列表推导式搞定:
indices_bool = [must_contain in s for s in x]
二、Pandas DataFrame列过滤方案
当x是DataFrame的一列时,用Pandas内置的str.contains()方法能高效完成筛选,尤其适合处理大规模数据:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ "names": ["2023_jan05", "2023_jan_27", "2023_feb04", "2023_feb05", "2024_feb05"] }) must_contain = "feb05" # 过滤出包含指定子串的所有行 filtered_rows = df[df["names"].str.contains(must_contain)] # 若仅需要提取列中的元素列表 desired_output = filtered_rows["names"].tolist()
str.contains()会返回一个布尔Series,直接用它作为DataFrame的索引即可筛选出符合条件的行,性能远优于手动循环。
内容的提问来源于stack exchange,提问作者Triceratops
相关产品推荐
相关产品推荐

