我的数据框如下:
df = pd.DataFrame({'year': [2010, 2011, 2012, 2015,2016,2017],
'sales': [10, 12, 13, 9, 11,7],
'Groups': ['AA', 'BB', 'AA', 'AA', 'CC', 'CC']})
我想做的是用一个整数索引值映射“组”列,以便相同的组成员分配相同的索引号。这样的事情:
Index year sales Groups
1 2010 10 AA
2 2011 12 BB
1 2012 13 AA
1 2015 9 AA
3 2016 11 CC
3 2017 7 CC
我当时在考虑使用set_index,但是不确定是否正确。
我想做的是用索引值映射“组”列,以便相同的组成员分配相同的索引号。像这样:
Index year sales Groups
1 2010 10 AA
2 2011 12 BB
1 2012 13 AA
1 2015 9 AA
3 2016 11 CC
3 2017 7 CC
感谢您的帮助。
答案 0 :(得分:2)
使用ngroup
df.index=df.groupby('Groups').ngroup()+1
或者factorize
和cat.codes
df.index=pd.factorize(df.Groups)[0]+1
df.index=df.Groups.astype('category').cat.codes+1
答案 1 :(得分:1)
有没有您不首先进行排序的原因?
否则,您可以尝试以下操作:
df = df.sort_values('Groups')
df['index'] = df['Groups'].rank(method='dense')
它将对您的组进行排名并对其进行适当索引。