Używam groupby
na pandas Dataframe, aby usunąć wszystkie wiersze, które nie mają minimum określonej kolumny. Coś takiego:Przechowywać inne kolumny przy użyciu min() z groupby
df1 = df.groupby("item", as_index=False)["diff"].min()
Jednakże, jeśli mam więcej niż dwie kolumny, pozostałe kolumny są pomijane. Czy mogę zachować te kolumny przy użyciu groupby, czy też będę musiała znaleźć inny sposób na opuszczenie wierszy?
Moje dane wygląda następująco:
item diff otherstuff
0 1 2 1
1 1 1 2
2 1 3 7
3 2 -1 0
4 2 1 3
5 2 4 9
6 2 -6 2
7 3 0 0
8 3 2 9
i powinien skończyć jak:
item diff otherstuff
0 1 1 2
1 2 -6 2
2 3 0 0
ale co dostaję to:
item diff
0 1 1
1 2 -6
2 3 0
Szukałem przez dokumentacji i nie można znaleźć niczego. Próbowałem:
df1 = df.groupby(["item", "otherstuff"], as_index=false)["diff"].min()
df1 = df.groupby("item", as_index=false)["diff"].min()["otherstuff"]
df1 = df.groupby("item", as_index=false)["otherstuff", "diff"].min()
Ale żadna z tych prac (realizowana z ostatnią, której składnia ma służyć agregowaniu po utworzeniu grupy).
Pierwsza zwraca wszystkie 'NaN', ale druga metoda działa. Dziękuję Ci! – PointXIV
Dziękujemy za udostępnienie dwóch sposobów. Znalazłem wiele instancji, które działają, gdy drugi nie działa i odwrotnie. Wydaje się, że zależy to od tego, czy twoje elementy są liczbowe, czy nie. Dobrze mieć oba. – sfortney
.sort_values zamiast obecnie ... prawda? –