我的数据框是这样的:
a b
0 123
0 321
0 456
12345 1234
43241 132
0 2134
12345 6543
43241 987
....
我需要根据列表在第三列中设置值(编辑:
a
不一定要排序):a 0 12345 43241 ....
c 0 1 2 ....
所以它应该成为
a b c
0 123 0
0 321 0
0 456 0
12345 1234 1
43241 132 2
0 2134 0
12345 6543 1
43241 987 2
....
目前,我正在按周期执行此操作:
a=data['a'].unique().tolist()
c=list(range(len(a)))
d=dict(zip(c,a))
df['c']=0
for i in d:
df.loc[df['a']==d[i],'c']=i
有更简单的方法吗?
最佳答案
您可以使用pandas.factorize
:
df['c'] = pd.factorize(df['a'])[0]
print(df)
a b c
0 0 123 0
1 0 321 0
2 0 456 0
3 12345 1234 1
4 43241 132 2
5 0 2134 0
6 12345 6543 1
7 43241 987 2