![](/img/trans.png)
[英]Pandas Dataframe: Retrieve the Maximum Value in a Pandas Dataframe using .groupby and .idxmax()
[英]Python Pandas groupby forloop & Idxmax
我有一个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。
我认为,如果我对您的理解正确,则可以使用groupby
和idxmax()
收集Series中的索引值,然后使用loc
从df
选择这些行:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.