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

Python中如何在for循环迭代时为DataFrame变量添加后缀

解决方案

当然可以实现,推荐用字典存储生成的DataFrame(比动态创建变量更规范易维护),或者根据需求动态创建全局变量,具体实现如下:

方法1:使用字典存储(推荐)

用字典统一管理所有带后缀的J、T DataFrame,避免全局命名空间混乱,后续访问和操作更方便:

import pandas as pd

exam_1 = pd.DataFrame([['Jim', 87], ['Toby', 44], ['Joe', 71], ['Tom', 59]], columns=['Name', 'Score'])
exam_2 = pd.DataFrame([['Tom', 88], ['Joe', 55], ['Jim', 62], ['Toby', 70]], columns=['Name', 'Score'])

# 初始化两个字典分别存J和T开头的结果
j_results = {}
t_results = {}

# 使用enumerate获取迭代次数(从1开始计数)
for iteration_num, df in enumerate((exam_1, exam_2), start=1):
    # 移除Score小于60的记录
    filtered_df = df[df['Score'] >= 60]
    # 按首字母筛选并存入字典,键名加上迭代次数后缀
    j_results[f'J_{iteration_num}'] = filtered_df[filtered_df['Name'].str.startswith('J')]
    t_results[f'T_{iteration_num}'] = filtered_df[filtered_df['Name'].str.startswith('T')]

# 访问示例:获取第一次迭代的J类结果
print(j_results['J_1'])
# 获取第二次迭代的T类结果
print(t_results['T_2'])

方法2:动态创建全局变量(不推荐)

如果一定要生成J_1、T_2这类直接可访问的变量,可以用globals()函数动态创建,但这种方式会降低代码可读性,不利于后续维护:

import pandas as pd

exam_1 = pd.DataFrame([['Jim', 87], ['Toby', 44], ['Joe', 71], ['Tom', 59]], columns=['Name', 'Score'])
exam_2 = pd.DataFrame([['Tom', 88], ['Joe', 55], ['Jim', 62], ['Toby', 70]], columns=['Name', 'Score'])

for iteration_num, df in enumerate((exam_1, exam_2), start=1):
    filtered_df = df[df['Score'] >= 60]
    # 动态生成带后缀的变量
    globals()[f'J_{iteration_num}'] = filtered_df[filtered_df['Name'].str.startswith('J')]
    globals()[f'T_{iteration_num}'] = filtered_df[filtered_df['Name'].str.startswith('T')]

# 直接访问变量示例
print(J_1)
print(T_2)

结果验证

  • 第一次迭代(exam_1):
    • J_1包含Jim(87)、Joe(71)
    • T_1为空(Toby44、Tom59均低于60被过滤)
  • 第二次迭代(exam_2):
    • J_2包含Jim(62)(Joe55低于60被过滤)
    • T_2包含Tom(88)、Toby(70)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:30:41