У меня есть DataFrame, который должен быть сгруппирован на трех уровнях и будет иметь самое высокое значение. Каждый день появляется возврат за каждое уникальное значение, и я хотел бы найти наивысший доход и детали.Python Pandas groupby forloop & Idxmax
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% |
| ...
Не уверен, если это будет цикл, или с помощью .ix.
Было бы здорово, если бы max (и друзья) приняли ключ, как в groupby, так и в df. Это, вероятно, все еще будет быстрее, хотя ... –
Да, я хочу, чтобы 'NumPy' имел параметр' key' для 'max' и' sort' тоже! (Хотя, как вы сказали, он, вероятно, не был включен, потому что вызов функции Python для каждого элемента массива NumPy, или DataFrame был бы серьезным препятствием для ускорения.) – unutbu
Я считаю, что это должно быть 'data.loc' not 'data.iloc'. По крайней мере, это то, что сработало для меня. –