【问题标题】:replace pandas dataframe with a unique id用唯一的 id 替换 pandas 数据框
【发布时间】:2018-06-23 05:28:27
【问题描述】:

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

【问题讨论】:

    标签: python-2.7 pandas numpy


    【解决方案1】:

    选项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 也非常节省内存

    【讨论】:

    • 对于字典cats = df['str_col'].cat.categories d = dict(zip(cats, range(1, len(cats) + 1)))
    猜你喜欢
    • 2021-11-24
    • 2016-12-21
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多