gpt4 book ai didi

Python Pandas groupby forloop & Idxmax

转载 作者:太空宇宙 更新时间:2023-11-04 09:07:26 35 4
gpt4 key购买 nike

我有一个必须按三个级别分组的 DataFrame,然后返回最高值。每天每个唯一值都有一个返回,我想找到最高返回和细节。

data.groupby(['Company','Product','Industry'])['ROI'].idxmax()

返回将显示:

Target   - Dish Soap - House       had a 5% ROI on 9/17
Best Buy - CDs - Electronics had a 3% ROI on 9/3

是最高的。

这是一些示例数据:

+----------+-----------+-------------+---------+-----+
| Industry | Product | Industry | Date | ROI |
+----------+-----------+-------------+---------+-----+
| Target | Dish Soap | House | 9/17/13 | 5% |
| Target | Dish Soap | House | 9/16/13 | 2% |
| BestBuy | CDs | Electronics | 9/1/13 | 1% |
| BestBuy | CDs | Electroincs | 9/3/13 | 3% |
| ...

不确定这是一个 for 循环,还是使用 .ix。

最佳答案

我认为,如果我理解正确的话,您可以使用 groupbyidxmax() 收集系列中的索引值,然后从 中选择那些行>df 使用 loc:

idx =  data.groupby(['Company','Product','Industry'])['ROI'].idxmax()
data.loc[idx]

另一种选择是使用reindex:

data.reindex(idx)

在我手边的(不同的)数据帧上,看来 reindex 可能是更快的选择:

In [39]: %timeit df.reindex(idx)
10000 loops, best of 3: 121 us per loop

In [40]: %timeit df.loc[idx]
10000 loops, best of 3: 147 us per loop

关于Python Pandas groupby forloop & Idxmax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18879782/

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