熊猫groupby和diff基于两列

时间:2020-04-17 17:31:33

标签: python pandas dataframe lambda pandas-groupby

假设我有以下dataframe

df = pd.DataFrame(
    {
        'A': ['a', 'a', 'b', 'b'],
        'B': [10, 8, 6, 4],
        'C': [9, 7, 5, 3]
    }
)

我想实现这一目标:

df.groupby('A').B.apply(lambda x: x.diff())

但是我希望diff()BC之间,而不是BB之间(希望这是有道理的)。我可以执行以下操作来实现我所追求的diff()

df.C.shift(-1)-df.B

但是我在如何将其合并到我的groupby逻辑中停留。

最终结果如下:

0    NaN
1   -3.0
2    NaN
3   -3.0

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

IIUC,使用:

s = df.groupby('A').apply(lambda x: x.C - x.B.shift()).reset_index(drop=True)
print(s)

此打印:

0    NaN
1   -3.0
2    NaN
3   -3.0