Pandas如何基于前一行不同列的值迭代计算生成目标DataFrame
Pandas 实现Supply滚动累加与Available计算方案
假设你的原始DataFrame命名为df,包含原始供应列Supply、订单列Order两列,可直接用以下代码实现需求:
import pandas as pd # 下方的df构造仅为示例,请替换为你自己的原始DataFrame df = pd.DataFrame({ "Supply": [2262, 2161, 2329, 2108], "Order": [2117, 2212, 2405, 2021] }) result_df = df.copy() # 计算第一行可用值 result_df.loc[0, "Available"] = result_df.loc[0, "Supply"] - result_df.loc[0, "Order"] # 从第二行开始逐行按规则计算 for idx in range(1, len(result_df)): # 当前行Supply = 原始df当前行Supply + 上一行的Available result_df.loc[idx, "Supply"] = df.loc[idx, "Supply"] + result_df.loc[idx-1, "Available"] # 当前行Available = 当前行新计算的Supply - 当前行Order result_df.loc[idx, "Available"] = result_df.loc[idx, "Supply"] - result_df.loc[idx, "Order"]
补充说明
- 上述代码逻辑和你描述的规则完全对齐,可读性高,万行以内的数据集运行效率足够
- 如果是超大规模数据集,可以用
numpy的累计求和逻辑优化,避免循环的性能损耗
内容的提问来源于stack exchange,提问作者Pardeep Naik
相关产品推荐
相关产品推荐

