Вы можете сделать это быстро и грязно с np.where
import pandas as pd
import numpy as np
# Create Example Data
df = pd.DataFrame({
'Id':[1, 1, 1, 2, 2, 2],
'A': [6, 4, 11, 7, 9, 12]
})
# Where
df['Difference'] = np.where(
# The Id's are the same
df['Id'] == df['Id'].shift(-1),
# Take the difference
df['A'] - df['A'].shift(-1),
# Else, np.NaN
np.NaN
)
Вывод:
A Id Difference
0 6 1 2.0
1 4 1 -7.0
2 11 1 NaN
3 7 2 -2.0
4 9 2 -3.0
5 12 2 NaN