如何在Pandas iterrows循环中为C3实现类似Where子句的条件判断
解决方案
方法1:使用Python三元表达式(简洁写法)
Python不支持类似SQL的if ... then ... else语法,替代方案是三元条件表达式,语法为真值 if 条件 else 假值,正好匹配你的需求:
df1 = pd.read_excel(path) result_list = [] # 避免使用内置名称"List"作为变量名 for index, row in df1.iterrows(): C1 = row[2] C2 = row[7] # 正确的条件判断写法 C3 = 'blue' if row[12] == 0 else 'green' result_list.append([C1, C2, C3]) # 修正原代码中C_3的笔误,应为C3
方法2:使用常规if-else语句
如果后续需要扩展更复杂的判断逻辑,常规if-else结构可读性更强:
df1 = pd.read_excel(path) result_list = [] for index, row in df1.iterrows(): C1 = row[2] C2 = row[7] if row[12] == 0: C3 = 'blue' else: C3 = 'green' result_list.append([C1, C2, C3])
性能优化建议
iterrows()遍历DataFrame的效率较低,若处理大数据量,推荐使用向量化操作或apply()提升性能:
df1 = pd.read_excel(path) # 批量生成C3列 df1['C3'] = df1.iloc[:, 12].apply(lambda x: 'blue' if x == 0 else 'green') # 提取目标列并转为列表 result_list = df1.iloc[:, [2, 7]].join(df1['C3']).values.tolist()
内容的提问来源于stack exchange,提问作者cufta05
相关产品推荐
相关产品推荐

