Удалить строки в Dataframe выше медианы по условию
Всем добрый день столкнулся с проблемой
Есть датафрейм с перечнем каталожных номеров для авто:
df = pd.DataFrame({'partnumber': '8K0805594L 8K0805594L 8K0805594L 5181109000 5181109000 5181109000 5181109000'.split(),
'oem': 'VAG VAG VAG SsangYong SsangYong SsangYong SsangYong'.split(),
'price': [13488, 12400, 8000, 9000, 7500, 4000, 2000]})
partnumber oem price
0 8K0805594L VAG 13488
1 8K0805594L VAG 12400
2 8K0805594L VAG 8000
3 5181109000 SsangYong 9000
4 5181109000 SsangYong 7500
5 5181109000 SsangYong 4000
6 5181109000 SsangYong 2000
Подскажите пожалуйста можно ли для каждого каталожного номера (partnumber) удалить строки, которые выше медианного значения поля (price)?
Чтобы получилось примерно вот так:
partnumber oem price
1 8K0805594L VAG 12400
2 8K0805594L VAG 8000
5 5181109000 SsangYong 4000
6 5181109000 SsangYong 2000
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Да вроде ничего сложного. Буквально всё делается:
df = df.merge(df.groupby('partnumber').median().reset_index(), on='partnumber', suffixes=('','_'))
df = df.loc[df['price'] <= df['price_']].drop(columns='price_')
df
Вывод:
partnumber oem price
1 8K0805594L VAG 12400
2 8K0805594L VAG 8000
5 5181109000 SsangYong 4000
6 5181109000 SsangYong 2000