首页 > 解决方案 > 如何根据 Pandas 中“Col1”之后创建的列更新“Col1”列的值

问题描述

我需要创建一个 A 列,它在开始时具有固定值。之后,我必须创建一个取决于 A 列的值的列 B。然后我必须为 A 列创建第二行,这将取决于前行中 B 列的结果。然后该过程对于以下行是相同的。问题是,当我要求 A 列处理 BI 列的结果时,由于尚未创建 B 列,因此会出现键错误。

我尝试过使用 apply 函数,并移动列。此外,我尝试使用默认值初始化 B 列,并希望在创建行时这些值会更新,但似乎 Pandas 首先创建了整个列,而不是遍历行。

我的 DataFrame 比这大得多,并且 A 和 B 之间有很多列,所以我试图尽可能地简化问题。

在此处输入图像描述

标签: pythondatabasepandasdataframeapply

解决方案


正如评论的那样,没有明确的依赖关系,很难对操作进行矢量化。我们可以只使用一个for循环。为此,我们假设我们有两个函数:

def A_to_B(a_value): return a_value + valueB

def B_to_A(b_value): return b_value + valueA

for i, idx in enumerate(df.index):
    # update A value only if not first row
    if i>0: df.loc[idx, 'A'] = df.loc[df.index[i-1], 'B']

    # update B value
    df.loc[idx, 'B'] = A_to_B(df.loc[idx, 'A'])

推荐阅读