#python #pandas #indexing #geospatial
#питон #панды #индексация #геопространственные
Вопрос:
У меня есть многоиндексный фрейм данных pandas с большим количеством данных за каждый год и штат в США. Я хотел бы удалить пять самых низких значений в столбце age
за год для каждого штата.
ID age ... BMI Year State 2001.0 ALASKA 1194.0 97.0 ... 20.19880 ALASKA 1196.0 72.0 ... 27.78515 ALASKA 1198.0 17.0 ... 19.61245 ALASKA 1195.0 19.0 ... 26.81935 ALASKA 1190.0 45.0 ... 29.87964 ... 2019.0 ALASKA 1621.0 94.0 ... 22.87767 ALASKA 1622.0 79.0 ... 29.80623 ALASKA 1624.0 24.0 ... 25.12029 ALASKA 1626.0 12.0 ... 20.15703 ALASKA 1641.0 63.0 ... 27.47901
Как я могу отбросить каждые 5 самых низких значений в столбце возраст для каждого года и каждого штата?
Комментарии:
1. Уронил, извини.
Ответ №1:
Вы могли бы попробовать:
df = df.reset_index() df = df.drop( df.groupby(["Year", "State"]).age.nsmallest(5).index.get_level_values(2) ).set_index(["Year", "State"], drop=True)
Ответ №2:
Я не знаю, является ли это наиболее эффективным, но решение может быть ( df
ваш фрейм данных):
import pandas as pd pd.concat([y.sort_values(by="age").iloc[5:,:] for _, y in df.groupby(df.index)])