获取在按数据框分组的多索引上具有最大列值的索引

Get index that has max column value on a multi index groupped by dataframe

我正在使用 pandas 处理数据集,我想获得在比赛中取得更多胜利的属性。我能够使用 groupby 函数创建数据框。 例如,对于可能有 3 个以上替代项的属性“surface”,我有这个数据框:

现在我想要一个像这样的输出数据框:

fullname              best_surface
Zuzana Zlochova       Hard
Zuzanna Bednarz       Clay
....

我设法通过对只能有两个值的属性进行一些合并来解决这个问题,但它不适用于可以有 3 个或更多值的属性。 数据集很大,所以我必须使用 pandas 操作,我不能使用迭代器。

谢谢

使用DataFrameGroupBy.idxmax for indices by first maximal by column hasWon, select rows and convert MultiIndex to DataFrame by MultiIndex.to_frame:

df = df.loc[df.groupby(level='fullname')['hasWon'].idxmax()].index.to_frame(index=False)
print (df)
              fullname surface
0      Zuzana Zlochova    Hard
1      Zuzanna Bednarz    Clay
2  Zuzanna Szczepanska    Clay
3   Zvonimir Oreskovic    Hard

或者在构造函数中将元组转换为DataFrame

df = pd.DataFrame(df.groupby('fullname')['hasWon'].idxmax().tolist(), 
                  columns=['fullname','best_surface'])
print (df)
              fullname best_surface
0      Zuzana Zlochova         Hard
1      Zuzanna Bednarz         Clay
2  Zuzanna Szczepanska         Clay
3   Zvonimir Oreskovic         Hard