如何在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
相关产品推荐
相关产品推荐

