如何对DataFrame实现多循环与多if条件的逻辑运算

实现方案
针对你描述的行内元素比较+批量处理大量DataFrame行的需求,优先用Pandas向量化操作实现,性能远高于逐行原生循环,以下是不同场景的代码示例:
场景1:仅每行独立比较第1、2个元素,生成判断结果
不需要循环,直接用向量化逻辑完成,十万行级数据也可以毫秒级处理:
import pandas as pd # 读取数据,Excel源文件就用pd.read_excel,csv就用pd.read_csv df = pd.read_excel("你的数据文件路径.xlsx") # 写法1:适合简单判断逻辑,性能最优 # 示例逻辑:如果行内第二个元素 > 第一个元素,结果列填"符合",否则填"不符合" df["判断结果"] = "不符合" df.loc[df.iloc[:, 1] > df.iloc[:, 0], "判断结果"] = "符合" # 写法2:适合复杂判断逻辑,可读性更高,万行级数据够用 df["判断结果"] = df.apply( lambda row: "符合" if row.iloc[1] > row.iloc[0] else "不符合", axis=1 )
场景2:需要迭代滚动计算(前一轮的结果作为后一轮的比较基准)
如果是类似Excel下拉公式、基准值逐行更新的逻辑,可以用以下写法:
base = df.iloc[0, 0] # 初始基准为第一行第一个元素 res_list = [] for current_val in df.iloc[:, 1]: # 你的比较逻辑 if current_val > base: res_list.append("上涨") base = current_val # 更新基准为当前值,给下一轮迭代用 else: res_list.append("持平/下跌") df["滚动判断结果"] = res_list
如果需要输出回Excel,直接加一行代码即可:
df.to_excel("处理结果.xlsx", index=False)
内容的提问来源于stack exchange,提问作者Thinker
相关产品推荐
相关产品推荐

