用唯一ID

时间:2018-01-14 10:04:59

标签: python-2.7 pandas numpy

我有一个包含数百万条目的数据框,其中一列是“TYPE”(字符串)。此特定列总共有400个值,我想用1到400之间的整数id替换值。我还想导出这个字典'TYPE'=> id以供将来参考。我试过to_dict但它没有帮助。无论如何可以做到这一点?

1 个答案:

答案 0 :(得分:2)

选项1:您可以使用pd.factorize

df['new'] = pd.factorize(df['str_col'])[0]+1

选项2:使用类别dtype:

df['new'] = df['str_col'].astype('category').cat.codes+1

甚至更好只是将其转换为分类dtype:

df['str_col'] = df['str_col'].astype('category')

当您需要使用数字时,只需使用类别代码:

df['str_col'].cat.codes

感谢@jezrael for extending the answer - 用于创建字典:

cats = df['str_col'].cat.categories
d = dict(zip(cats, range(1, len(cats) + 1)))

PS类别dtype也非常节省内存