删除每个索引的多索引熊猫数据帧的最低五个值
Posted
技术标签:
【中文标题】删除每个索引的多索引熊猫数据帧的最低五个值【英文标题】:Drop lowest five values of multiindex pandas dataframe per index 【发布时间】:2022-01-07 22:29:16 【问题描述】:我有一个 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】:你可以试试:
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
是您的 DataFrame):
import pandas as pd
pd.concat([y.sort_values(by="age").iloc[5:,:] for _, y in df.groupby(df.index)])
【讨论】:
以上是关于删除每个索引的多索引熊猫数据帧的最低五个值的主要内容,如果未能解决你的问题,请参考以下文章
在熊猫多索引数据框中返回满足逻辑索引条件的每个组的最后一行[重复]