Сохраняйте другие столбцы при использовании min () с groupby

Я использую groupby pandas, чтобы удалить все строки, которые не имеют минимум определенного столбца. Что-то вроде этого:

 df1 = df.groupby("item", as_index=False)["diff"].min() 

Однако, если у меня больше этих двух столбцов, другие столбцы будут отброшены. Могу ли я сохранить эти столбцы с помощью groupby, или мне придется искать другой способ сбросить строки?

Мои данные выглядят так:

  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 

и должно закончиться следующим образом:

  item diff otherstuff 0 1 1 2 1 2 -6 2 2 3 0 0 

но я получаю:

  item diff 0 1 1 1 2 -6 2 3 0 

Я просматривал документацию и ничего не нашел. Я пытался:

 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() 

Но ни одна из этих работ (реализована с последней, что синтаксис предназначен для агрегирования после группы).

One Solution collect form web for “Сохраняйте другие столбцы при использовании min () с groupby”

Метод # 1: используйте idxmin() чтобы получить индексы элементов минимальной diff , а затем выберите те:

 >>> df.loc[df.groupby("item")["diff"].idxmin()] item diff otherstuff 1 1 1 2 6 2 -6 2 7 3 0 0 [3 rows x 3 columns] 

Способ № 2: сортировка по diff , а затем взять первый элемент в каждой группе item :

 >>> df.sort("diff").groupby("item", as_index=False).first() item diff otherstuff 0 1 1 2 1 2 -6 2 2 3 0 0 [3 rows x 3 columns] 

Обратите внимание, что результирующие индексы отличаются друг от друга, хотя содержимое строк одинаково.

  • Как удалить последние две цифры в столбце с целым типом?
  • XML для pandas dataframe
  • как создать гистограмму в пандах с метками оси x из столбца?
  • Как фильтровать по индексу под-уровня в Pandas
  • Pandas: Как заполнить нулевые значения средним значением groupby?
  • Как создать много условий взаимодействия в Pandas?
  • Pandas: данные Timeseries: как выбрать строки часа или дня или минуты?
  • Векторный способ запроса данных даты и цены
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.