Как создать столбец заказа при группировке по другому столбцу

#python #pandas

#питон #панды

Вопрос:

У меня есть фрейм данных в формате:

 d = {'hour': [1, 1,2,2], 'value': [10, 50,200,100]}
df = pd.DataFrame(data=d)
 

Как я могу создать порядок столбцов, где порядок будет порядком значений при группировке по столбцу часов.

Результат должен быть:

 index hour  value   order
0      1     10      1
1      1     50      2
2      2     200     2
3      2     100     1
 

Ответ №1:

Используйте GroupBy.rank :

 df['order'] = df.groupby('hour')['value'].rank(method='dense').astype(int)
print (df)
   hour  value  order
0     1     10      1
1     1     50      2
2     2    200      2
3     2    100      1
 

Ответ №2:

 df.sort_values('value', inplace=True)
df['order'] = df.groupby('hour').cumcount()   1
df.sort_index(inplace=True)  # if you wish to keep the original order