假设我有以下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()
在B
和C
之间,而不是B
和B
之间(希望这是有道理的)。我可以执行以下操作来实现我所追求的diff()
:
df.C.shift(-1)-df.B
但是我在如何将其合并到我的groupby
逻辑中停留。
最终结果如下:
0 NaN
1 -3.0
2 NaN
3 -3.0
有什么想法吗?
答案 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