Python如何基于字符串列表批量筛选Pandas DataFrame生成独立子表
解决方案
首先提醒一个Python基础语法细节:Python列表为0索引,你示例中使用的lines[1]实际取到的是列表第二个元素(也就是示例里的Rafa),如果要取第一个元素John,应该使用lines[0],以下方案默认适配正确的索引对应关系,你可以根据实际需求调整序号起始值。
方案1:用字典存储筛选结果(最推荐)
动态生成独立变量不仅不利于后续批量管理,调用时也需要硬编码变量名,出错概率更高。更高效的方式是把所有筛选后的DataFrame统一存在字典中,直接通过键名调用即可:
# 初始化存储结果的空字典 name_df_dict = {} # 遍历名字列表,start=1代表序号从1开始计数 for idx, name in enumerate(lines, start=1): # 增加na=False避免Identifier列有空值时出现报错 name_df_dict[f"names_{idx}"] = Registration[Registration['Identifier'].str.contains(name, na=False)]
后续需要调用对应结果时,直接使用name_df_dict["names_1"]即可拿到第一个名字对应的筛选结果,批量遍历、增删操作都非常方便。
方案2:动态生成独立全局变量(仅满足指定需求,不推荐)
如果确实需要生成names_1、names_2这类独立的全局变量,可以通过globals()方法实现:
for idx, name in enumerate(lines, start=1): globals()[f"names_{idx}"] = Registration[Registration['Identifier'].str.contains(name, na=False)]
运行代码后就可以直接调用names_1、names_2这类变量使用。
内容的提问来源于stack exchange,提问作者Rafael Soler Ortuño
相关产品推荐
相关产品推荐

