在多索引 pandas DataFrame 中选择每个索引的第一行

问题描述 投票:0回答:2

选择多索引 pandas 数据帧的每个索引的第一行。

grouped = ecommerce[["category_id", "brand", "price"]].groupby(by=["category_id", "brand"]).mean()
grouped_sort = grouped.sort_values(by=["category_id", "price"], ascending=False)

grouped_sort
看起来像这样:

现在在这个数据框架上,我想在每个类别中选择价格最高的第一个品牌。

有人可以帮助我吗?

python pandas data-analysis
2个回答
0
投票

以下代码可以提供帮助:

gsgb = grouped_sort.copy()
gsgb = gsgb.groupby(level=0)
print(type(gsgb))
gsgb.head()

for cat, df in gsgb:
    display(df.sort_values(by=["price"], ascending=False).reset_index().iloc[0])

工作:
它基本上循环分组数据框中的所有类别,然后根据

price
对值进行排序,然后重置索引,最后选择价格最高的类别。


0
投票

您可以尝试以下任一方法:

df.groupy(level=...).nth(0)

df.groupy(level=...).head(1)

df.groupy(level=...).first()

**注意:请考虑 .first() 将重置索引并跳过任何包含 NaN 的行。带有 None 的行不受影响。

© www.soinside.com 2019 - 2024. All rights reserved.