1 回答

TA贡献1828条经验 获得超6个赞
假设 df 看起来像:
df:
Col-a Col-b Col-c
0 val1 abc val1
1 val2 bca bca
2 NaN bca zzs
3 val2 NaN val2
4 val3 xyz zzs
使用pd.factorize()以及格式会给我们:
df_new=pd.DataFrame({'Col-a':['Col-a{}'.format(i) for i in list(pd.factorize(df['Col-a'])[0])],'Col-b':df['Col-b'].values.tolist(),'Col-c':['Col-c{}'.format(i) for i in list(pd.factorize(df['Col-c'])[0])]})
>>df_new
Col-a Col-b Col-c
0 Col-a0 abc Col-c0
1 Col-a1 bca Col-c1
2 Col-a-1 bca Col-c2
3 Col-a1 NaN Col-c3
4 Col-a2 xyz Col-c2
需要注意的是pd.factorize对待NaN作为-1默认情况下,因此该行2列,一个具有-1。因此,如果需要,您可以在执行上述代码之前将它们删除。
希望这可以帮助。
添加回答
举报