想知道我可以使用什么类型的组来产生这个结果。
输入:
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
答案 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