gpt4 book ai didi

python - 来自 Multi-index DataFrame 的 pandas-Max 值

转载 作者:太空宇宙 更新时间:2023-11-03 23:54:19 27 4
gpt4 key购买 nike

我有一个多索引数据框,如下所示。

+-------+----+------+
| | | %age |
+-------+----+------+
| Group | Id | |
| 0 | 18 | 75 |
| 0 | 30 | 12 |
| 0 | 42 | 13 |
| 1 | 18 | 12 |
| 1 | 30 | 75 |
| 1 | 42 | 13 |
| 2 | 18 | 13 |
| 2 | 30 | 12 |
| 2 | 42 | 75 |
+-------+----+------+

我想从每个组中获取最大值,但与 SO 上的许多其他问题相反,还想显示所有索引级列。像这样:

+-------+----+------+
| | | %age |
| Group | Id | |
| 0 | 18 | 75 |
| 1 | 30 | 75 |
| 2 | 42 | 75 |
+-------+----+------+


我尝试了来自 here 的这个答案

df1 = df_pct.reset_index(level=1, drop=True)
mask = df1.index.isin(df1.groupby(level=[0])['%age'].idxmax())
df_pct[mask]

但是我得到了一个显示整个数据框的输出

最佳答案

对我来说,工作更简单的解决方案 - reset_indexisin 应该省略并添加 loc 以供 MultiIndex 选择值(value)观:

df = df_pct.loc[df_pct.groupby(level=[0])['%age'].idxmax()]
print (df)
%age
Group Id
0 18 75
1 30 75
2 42 75

详细信息:

print (df_pct.groupby(level=[0])['%age'].idxmax())
Group
0 (0, 18)
1 (1, 30)
2 (2, 42)
Name: %age, dtype: object

编辑:

对于 MultiIndex 的前 N ​​个可以使用 DataFrame.sort_valuesGroupBy.head :

N = 2
df1 = (df_pct.sort_values(['Group','%age'], ascending=[True, False])
.groupby(level=[0])['%age']
.head(N))

print (df1)
Group Id
0 18 75
42 13
1 30 75
42 13
2 42 75
18 13
Name: %age, dtype: int64

关于python - 来自 Multi-index DataFrame 的 pandas-Max 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58387881/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com