Pandas удалить группу, если разница между первой и последней строкой в ​​группе превышает значение - PullRequest
1 голос
/ 16 марта 2020

У меня есть фрейм данных df:

df = pd.DataFrame({})
df['X'] = [3,8,11,6,7,8]
df['name'] = [1,1,1,2,2,2]

    X  name
0   3     1
1   8     1
2  11     1
3   6     2
4   7     2
5   8     2

Для каждой группы в пределах 'name' и я хочу удалить эту группу, если разница между первой и последней строкой этой группы меньше указанного значения d_dif в абсолютном выражении:

Например, когда d_dif = 5, я хочу получить:

    X  name
0   3     1
1   8     1
2  11     1

1 Ответ

1 голос
/ 16 марта 2020

Если ваши данные все больше и больше X, вы можете использовать groupby().transform() и np.ptp

threshold = 5
ranges = df.groupby('name')['X'].transform(np.ptp)

df[ranges > threshold]

Если вас интересуют только first и last, тогда transform просто first и last:

threshold = 5
groups = df.groupby('name')['X']

ranges = groups.transform('last') - groups.transform('first')

df[ranges.abs() > threshold]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...