Отбросьте самые низкие пять значений фрейма данных многоиндексных панд на индекс

#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)])