Ich habe einen Datenrahmen:Pandas zweite Maximalwert pro Gruppe in Datenrahmen
bq_selection_id bq_balance bq_market_id bq_back_price
0 45094462 185.04 155 1.87
1 45094462 185.04 155 1.97
2 45094463 185.04 155 3.05
3 45094463 185.04 156 3.05
4 45094464 185.04 156 5.80
5 45094464 185.04 156 5.80
6 45094466 185.04 157 200.00
7 45094466 185.04 157 200.00
8 45094465 185.04 157 NaN
9 45094465 185.04 157 NaN
Ich möchte zwei zusätzliche Spalten haben second_lowest, none_values beide je Gruppe, groupby Markt ID. Ein anderes Wort für die Markt-ID 155 second_lowest 1.97 und es gibt keine NaN-Werte, daher ist none_values False. Ich möchte etwas wie bekommen:
bq_selection_id bq_balance bq_market_id bq_back_price second_lowest none_val
0 45094462 185.04 155 1.87 1.97 False
1 45094462 185.04 155 1.97 1.97 False
2 45094463 185.04 155 3.05 1.97 False
3 45094463 185.04 156 3.05 5.80 False
4 45094464 185.04 156 5.80 5.80 False
5 45094464 185.04 156 6.40 5.80 False
6 45094466 185.04 157 1.00 1.70 True
7 45094466 185.04 157 1.70 1.70 True
8 45094465 185.04 157 NaN 1.70 True
9 45094465 185.04 157 NaN 1.70 True
Können Sie mir bitte damit helfen?
könnten Sie bitte plädieren Wie soll man '1,70' für' bq_market_id == 157' bekommen? – MaxU
Grundsätzlich gruppierte ich alle Werte möglicherweise mit .groupby ('bq_market_id') und nehme dann den nächsten min/kleinsten Wert in der Gruppe mit der ID 157 (1.00, 1.70, NaN, NaN), so dass der min Wert 1.00 und der zweit kleinste ist 1.70 –