#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