Как создать новый индекс, ранжировать группы по переменным? - PullRequest
0 голосов
/ 12 мая 2018

Интересно, какую группу я могу использовать для получения этого результата.

Введите:

    Root    Strike
33  AAL     49
43  AAL     49
44  AAL     49.5
35  AAL     50
45  AAL     50

выход

    Strike Num  Root    Strike
33  1           AAL     49
43  1           AAL     49
44  2           AAL     49.5
35  3           AAL     50
45  3           AAL     50

1 Ответ

0 голосов
/ 12 мая 2018

Вам не нужно группировать. Вы хотите создать новый столбец «Strike Num» ранжирования строк по Strike. pandas rank () автоматически выполняет группировку, упорядочивание и дает вам контроль над индексированием связей; здесь вы хотите, чтобы ранг был наименьшим: method='min'

df = pd.read_csv(pd.compat.StringIO(data), index_col=0, sep='\s+')

df.insert(0, 'Strike Num', df.Strike.rank(method='min').astype(int))

    Strike Num Root  Strike
33           1  AAL    49.0
43           1  AAL    49.0
44           3  AAL    49.5
35           4  AAL    50.0
45           4  AAL    50.0
...