为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕哥9229398 2021-05-30 15:04:50
我想通过使用 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 - 这是一项简单的任务,我不需要任何帮助)。我希望我能解释一下。在此先感谢您的帮助。
查看完整描述

1 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

一种解决方案是获取索引并使用i-2和i+2


i = 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   C

0   1   4   NaN NaN

1   2   2   NaN NaN

2   3   2   1.0 2.0

3   4   3   NaN NaN

4   5   2   NaN NaN

或者当然可以再次切入以b=1达到预期的输出


df[df.B.eq(1)]

    n   A   B   C

2   3   2   1.0 2.0


查看完整回答
反对 回复 2021-06-01
  • 1 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信