Pandas DataFrame列值重映射

时间:2015-12-20 00:12:34

标签: python pandas

假设以下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可能有更好的解决方案。

1 个答案:

答案 0 :(得分:0)

这可能对您有所帮助。

x,y = pd.factorize(df['id'])
remap = dict(set(zip(list(x),list(y))))