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

如何在Python中使用for循环将结果存入多个变量?附示例代码与需求说明

解决方法:正确提取并存储分段的Fail行到多个变量

你的需求是把DataFrame中每个Pass之前的Fail行分别存入val_1、val_2这类变量,原代码的问题主要是循环逻辑重复赋值、外层循环次数不合理,下面是修正后的实现:

修正后的代码

import pandas as pd

initial_data = {
    'First_name': ['Ram', 'Mohan', 'Tina', 'Jeetu', 'Meera'],
    'Last_name': ['Kumar', 'Sharma', 'Ali', 'Gandhi', 'Kumari'],
    'Test': ['fail','pass','fail','pass','fail'] 
}
df = pd.DataFrame(initial_data, columns = ['First_name', 'Last_name', 'Test'])

# 复制原DataFrame,避免修改原始数据
current_df = df.copy()
# 计数器,用来生成val_1、val_2这样的变量名
counter = 1

# 循环直到当前DataFrame中没有'pass'记录
while current_df['Test'].str.contains('pass', na=False).any():
    # 找到第一个'pass'的索引
    first_pass_idx = current_df['Test'].str.contains('pass', na=False).idxmax()
    # 提取第一个'pass'之前的所有行(即fail行)
    fail_segment = current_df.iloc[:first_pass_idx]
    # 将结果存入对应的全局变量
    globals()[f'val_{counter}'] = fail_segment
    # 更新当前DataFrame:移除已提取的fail行和对应的pass行
    current_df = pd.concat([current_df, fail_segment]).drop_duplicates(keep=False)
    current_df = current_df.drop(first_pass_idx)
    # 计数器加1
    counter += 1

# 验证输出
print("val_1")
print(val_1)
print("\nval_2")
print(val_2)

代码解释

  • 用while循环替代固定次数的for循环,会自动在没有pass记录时停止,适配任意数量的分段场景
  • 每次循环只生成一个对应变量(val_1、val_2),解决原代码内层循环重复赋值的问题
  • 每次处理后更新current_df:先移除已提取的fail行,再移除对应的pass行,确保下一次处理的是剩余的有效数据集
  • 使用f-string替代format,让变量名生成更简洁直观

输出结果

val_1
  First_name Last_name Test
0        Ram     Kumar  fail

val_2
  First_name Last_name Test
2        Tina      Ali  fail

这样就完全符合你期望的输出效果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 17:57:28