如何通过变量生成新的索引,排名组?

时间:2018-05-12 00:20:06

标签: pandas insert series rank

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

输入:

    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 :(得分:1)

您不需要分组。 你想通过Strike创建一个新的列'Strike Num'排名行。 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