Возврат Среднее значение Макс с другим значением группы - PullRequest
1 голос
/ 26 апреля 2020

Я хочу получить минимальное значение по двум групповым уровням, например, минимальное значение группы по кварталам и минимальное значение по кварталам магазина. И поиск, есть ли другой способ сделать это вместо объединения таблиц, так как я думаю, что объединение таблиц происходит медленно.

например у меня есть набор данных

   Date       Quarter  Year Store Price     Sales Unit
   1-1-2020    Q1      2020   A     1            1
   31-1-2020   Q1      2020   A     3            0
   1-2-2020    Q1      2020   B     2            1
   1-5-2020    Q2      2020   A     4            3
   1-9-2020    Q4      2020   B     5            9

Ожидаемый результат

    Date       Quarter Year  Store  Price  Sales Unit   Min by Quarter    Min by Quarter by Store
   1-1-2020    Q1      2020   A     1            1      1  (1,3,2 in Q1)    1  (1,3 in store A and Q1)
   31-1-2020   Q1      2020   A     3            0      1                   1
   1-2-2020    Q1      2020   B     2            1      1                   2
   1-5-2020    Q2      2020   A     4            3      4                   4 
   1-9-2020    Q4      2020   B     5            9      5                   5

Спасибо

1 Ответ

0 голосов
/ 26 апреля 2020

Используйте GroupBy.transform с min для новых заполненных столбцом агрегированных значений по группам:

df['Min by Quarter'] = df.groupby('Quarter')['Price'].transform('min')
df['Min by Quarter by Store'] = df.groupby(['Quarter', 'Store'])['Price'].transform('min')
print (df)
        Date Quarter  Year Store  Price  Sales Unit  Min by Quarter  \
0   1-1-2020      Q1  2020     A      1           1               1   
1  31-1-2020      Q1  2020     A      3           0               1   
2   1-2-2020      Q1  2020     B      2           1               1   
3   1-5-2020      Q2  2020     A      4           3               4   
4   1-9-2020      Q4  2020     B      5           9               5   

   Min by Quarter by Store  
0                        1  
1                        1  
2                        2  
3                        4  
4                        5  
...