如何生成新索引,按变量对组进行排名?

How to produce new index, ranking groups by variable?

想知道我可以使用什么样的分组来产生这个结果。

输入:

    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

您不需要分组依据。 您想要创建一个新列 '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