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