【问题标题】:Replacing multiple string values in a column with numbers in pandas用熊猫中的数字替换列中的多个字符串值
【发布时间】:2021-12-28 13:59:51
【问题描述】:

我目前正在处理名为 df 的 pandas 数据框。一列包含 多个标签(确切地说,超过 100 个)。

我知道在值较少时如何替换值。

例如,在典型的泰坦尼克号示例中:

titanic.Sex.replace({'male': 0,'female': 1}, inplace=True)

当然,为 100 多个值这样做会非常耗时。我见过类似的问题,但所有答案都涉及输入数据。有没有更快的方法来做到这一点?

【问题讨论】:

    标签: python pandas dataframe numpy scikit-learn


    【解决方案1】:

    我想你在找factorize:

    df = pd.DataFrame({'col': list('ABCDEBJZACA')})
    df['factor'] = df['col'].factorize()[0]
    

    输出:

       col  factor
    0    A       0
    1    B       1
    2    D       2
    3    C       3
    4    E       4
    5    B       1
    6    J       5
    7    Z       6
    8    A       0
    9    C       3
    10   A       0
    

    【讨论】:

    • 虽然我遇到了错误,但它确实有效。谢谢!请参阅下面的错误::1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from DataFrame。尝试改用 .loc[row_indexer,col_indexer] = value
    • @corvusMidnight 你的错误是什么?
    猜你喜欢
    • 1970-01-01
    • 2019-11-23
    • 2020-03-07
    • 2022-07-27
    • 2019-06-03
    • 2022-10-13
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    相关资源
    最近更新 更多