You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在IPython中如何获取指定类型且符合命名模式的本地变量列表?

获取trade_开头的DataFrame实例列表并批量添加列

嘿,这个需求我之前也碰到过!你已经通过dir()拿到了变量名字符列表,现在只需要把这些名字映射到实际的DataFrame实例就行,用Python的命名空间字典就能轻松搞定。

步骤1:获取DataFrame实例列表

globals()函数会返回当前全局命名空间的字典,键是变量名,值就是对应的变量对象。我们可以基于你已经写的列表推导式,直接从globals()里取出对应的DataFrame:

import pandas as pd

# 获取所有以trade_开头的DataFrame实例(加类型判断避免误取)
df_list = [globals()[var_name] for var_name in dir() 
           if var_name.startswith('trade_') 
           and isinstance(globals()[var_name], pd.DataFrame)]

这里加isinstance判断是为了保险——万一有其他以trade_开头的非DataFrame变量,不会被误加进来。

步骤2:给每个DataFrame批量添加列

拿到实例列表后,遍历它们就能批量操作了。比如我们给每个DataFrame加一列data_source,值对应它的变量名:

# 遍历变量名+实例,添加带变量标识的列
for var_name in [x for x in dir() 
                 if x.startswith('trade_') 
                 and isinstance(globals()[x], pd.DataFrame)]:
    df = globals()[var_name]
    df['data_source'] = var_name

# 或者直接用之前的df_list,添加固定值的列
for df in df_list:
    df['new_column'] = 'default_value'

原理说明

IPython工作区里的变量都存在全局命名空间中,globals()就是这个空间的字典视图。通过变量名字符串作为键,就能直接拿到对应的DataFrame实例,而不是仅仅拿到名字字符串,这样就能对每个实例直接做修改了。

内容的提问来源于stack exchange,提问作者StayFoolish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:25:48