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

如何修改代码实现按参数化名称创建过滤后的DataFrame?

解决方法

方法1:动态创建命名变量(不推荐,易污染全局命名空间)

你原代码里的df_{i} = ...属于语法错误,Python不支持这种直接拼接变量名的写法。要实现动态生成df_a、df_b这类变量,可以借助globals()字典操作全局命名空间:

for i in ['a', 'b']:
    globals()[f'df_{i}'] = df[df['name'] == i]

执行后就能直接调用df_a和df_b,效果和你预期完全一致。

方法2:用字典存储过滤结果(更推荐,便于管理)

如果不想生成过多零散变量,建议将过滤后的DataFrame存入字典,以name值为键,这种方式更易维护,也不会污染命名空间:

# 常规循环写法
df_dict = {}
for i in ['a', 'b']:
    df_dict[i] = df[df['name'] == i]

# 调用过滤后的数据集
print(df_dict['a'])  # 对应预期的df_a
print(df_dict['b'])  # 对应预期的df_b

也可以用字典推导式简化代码:

df_dict = {i: df[df['name'] == i] for i in ['a', 'b']}

额外优化:自动获取所有唯一name值

如果name字段的取值不止'a'和'b',可以直接从原DataFrame中提取所有唯一值,无需手动枚举:

unique_names = df['name'].unique()
df_dict = {name: df[df['name'] == name] for name in unique_names}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 06:03:12