Мне нужно удалить дубликаты из DF на основе двух столбцов и вернуть строку w / min & max на основе 3-го столбца - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть датафрейм Python со многими значениями, который выглядит следующим образом:

Дата Размер Цена 17.04.2009 3 71.00 17.04.2009 3 70.12 17.04.2009 3 69.00 4/17 /2019 3 71,55 17.04.2009 50 73,45 17/4/2019 50 72,45 17/17/2019 50 71,45 17/17/2019 50 70,45

Мне нужно отбросить дублированные дату и время и вернуть мин имаксимальное количество строк из столбца «Цена» - желаемый результат:

Дата Размер Цена 17.04.2009 3 69.00 17.04.2009 3 71.55 17.04.2009 50 73.45 17.04.2009 5070.45

Я пытался использовать drop duplicates и groupby (), но, похоже, ничего не придумал.

1 Ответ

0 голосов
/ 21 апреля 2019
import pandas as pd

l1 = ['Date' ,'Size', 'Price']
l2 = [['4/17/2019', 3 ,71.00],
      ['4/17/2019', 3, 70.12],
      ['4/17/2019' ,3, 69.00],
      ['4/17/2019', 3, 71.55],
      ['4/17/2019', 50, 73.45],
      ['4/17/2019', 50, 72.45],
      ['4/17/2019', 50, 71.45],
      ['4/17/2019', 50, 70.45],
      ['4/18/2019', 50, 70.45]]

df = pd.DataFrame(l2, columns =l1)

df['Date'] = pd.to_datetime(df['Date'])  #making sure its dtype is date

## sort based on price, then group it based on Date then aggregate the min and max values
sorted_grouped_agg = df.sort_values(by=['Price']).groupby('Date').agg(['min','max'])

print(sorted_grouped_agg)


#######   Output  #######

              Size        Price
            min max    min    max
Date
2019-04-17    3  50  69.00  73.45
2019-04-18   50  50  70.45  70.45

#################################
...