猿问

根据另一列计算行之间的差异

我想通过使用 python/pandas 计算基于某些列的行之间的差异。我想我可以通过使用小例子来更好地解释。所以,我有以下数据:


 Number of rows       A             B

 1                    4             NaN

 2                    2             NaN

 3                    2             1

 4                    3             NaN

 5                    2             NaN

我想获得以下数据:


 Number of rows      A            B           C

 3                   2            1           2

所以,让我解释一下我在这里做了什么。首先,我需要标识列B的行,该行的值为1(可以看到,行号3的行值为1)。然后,我需要找到该行(第 3 行)之前和之后的 2 行之间的差异,并将结果显示为 C 列。在我们的示例中,第 3 行之前的 2 行是第 1 行,之后是 2 行第 3 行是第 5 行。列 A 的第 1 行和第 5 行的值之间的差值为 2 (4-2 = 2)(最后,我将保留行仅在列中具有值C - 这是一项简单的任务,我不需要任何帮助)。我希望我能解释一下。在此先感谢您的帮助。


慕哥9229398
浏览 113回答 1
1回答

尚方宝剑之说

一种解决方案是获取索引并使用i-2和i+2i = df.loc[df.B.eq(1)].index.tolist()j = [(i_-2,i_+2) for i_ in i ]df.loc[df.B.eq(1), 'C'] = [df.A.iloc[a] - df.A.iloc[b] for (a,b) in j]n   A   B   C0   1   4   NaN NaN1   2   2   NaN NaN2   3   2   1.0 2.03   4   3   NaN NaN4   5   2   NaN NaN或者当然可以再次切入以b=1达到预期的输出df[df.B.eq(1)]    n   A   B   C2   3   2   1.0 2.0
随时随地看视频慕课网APP

相关分类

Python
我要回答