gpt4 book ai didi

python - 获取 pandas groupby 中元组值列的 idxmax 或 idxmin

转载 作者:行者123 更新时间:2023-12-01 08:20:51 24 4
gpt4 key购买 nike

我有一个元组值分数,我想获取与其最大值对应的行。我想做的一个玩具示例是:

import pandas as pd
df = pd.DataFrame({'id': ['a', 'a', 'b', 'b'],
'score': [(1,1,1), (1,1,2), (0, 0, 100), (8,8,8)],
'numeric_score': [1, 2, 3, 4],
'value':['foo', 'bar', 'baz', 'qux']})
# Works, gives correct result:
correct_df = df.loc[df.groupby('id')['numeric_score'].idxmax(), :]
# Fails with a TypeError
goal_df = df.loc[df.groupby('id')['score'].idxmax(), :]

Correct_df 具有我想要的 goal_df 结果。这会引发一堆错误,其核心似乎是:

类型错误:此数据类型不允许缩减操作“argmax”

一个有效但丑陋的解决方案是:

best_scores = df.groupby('id')['score'].max().reset_index()[['id', 'score']]
goal_df = (pd.merge(df, best_scores, on=['id', 'score'])
.groupby(['id'])
.first()
.reset_index())

有这个的光滑版本吗?

最佳答案

我理解你的问题是:

“NumPy 的 .argmax() 不适用于元组。对于一系列元组,如何确定最大值元组的索引?”

IIUC,这将返回期望的结果:

df.loc[df.score == df.score.max()]

关于python - 获取 pandas groupby 中元组值列的 idxmax 或 idxmin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54657509/

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