假设以下DataFrame:
df = pd.DataFrame({'id': [8,16,23,8,23], 'count': [5,8,7,1,2]}, columns=['id', 'count'])
id count
0 8 5
1 16 8
2 23 7
3 8 1
4 23 2
...是否有一些熊猫魔法可以让我重新映射id以使id成为顺序?寻找像这样的结果:
id count
0 0 5
1 1 8
2 2 7
3 0 1
4 2 2
将原始ID [8,16,23]
重新映射到[0,1,2]
注意:重新映射不必维护ID的原始顺序。例如,以下重新映射也可以正常:[8,16,23] -> [2,0,1]
,但重映射后的id空间应该是连续的。
我目前正在使用for
循环和dict
来跟踪重新映射,但感觉Pandas可能有更好的解决方案。
答案 0 :(得分:0)
这可能对您有所帮助。
x,y = pd.factorize(df['id'])
remap = dict(set(zip(list(x),list(y))))