【问题标题】:How to replace similar values in the dataframe column properly?如何正确替换数据框列中的相似值?
【发布时间】:2020-08-14 16:19:01
【问题描述】:

我有来自数据框的字符串列'Grade' 具有以下可用值:'A++'、'A+'、'A'、'A-'、'B++'。我想将整个列 (对于 MinMaxScaler() 方法) 相应地转换为以下值:0、1、2、3、4。 我尝试了一些解决方案,但不知道如何正确地做到这一点。 请您推荐一个更好的解决方案吗? 代码如下:

df['Grade'] = df['Grade'].replace(to_replace='[A++]', value='0', regex=True)
df['Grade'] = df['Grade'].replace(to_replace='[A+]', value='1', regex=True)
df['Grade'] = df['Grade'].replace(to_replace='[A]', value='2', regex=True)
df['Grade'] = df['Grade'].replace(to_replace='[A-]', value='3', regex=True)
df['Grade'] = df['Grade'].replace(to_replace='[B+]', value='4', regex=True)

结果如下: replace result

【问题讨论】:

    标签: python dataframe replace


    【解决方案1】:

    您可以将字典与replace 一起使用,因此请引用小插图:

    对于 DataFrame 嵌套字典,例如 {'a': {'b': np.nan}},是 阅读如下:在“a”列中查找值“b”并替换它 与 NaN。 value 参数应该是 None 以使用嵌套字典 这边走。您也可以嵌套正则表达式。请注意该列 名称(嵌套字典中的顶级字典键)不能 正则表达式。

    所以你需要查找列'Grade',在字典中,lhs 是要替换的等级,RHS 是值:

    import pandas as pd
    df = pd.DataFrame({'Grade':["A++","A+","A-","A","B+","A++","A-","B+"]})
    df.replace({'Grade': {'A++': 0,'A+': 1,'A-': 3,"A":2,'B+': 4}})
    
       Grade
    0   0
    1   1
    2   3
    3   2
    4   4
    5   0
    6   3
    7   4
    

    【讨论】:

    • 但是它只会留下 5 条记录:0 A++ 1 A+ 2 A- 3 A 4 B+ .我通过print(df['Grade'])检查了它
    • 你是指谁?您必须覆盖数据框, df = df.replace({'Grade': {'A++': 0,'A+': 1,'A-': 3,"A":2,'B+': 4}})
    • 我的意思是它不会返回包含所有值的整列,而是只返回 5 条记录:(即使我写了 df。
    • 见上文.. 它应该给你所有的记录。你的数据框有什么不同吗?
    猜你喜欢
    • 2018-12-04
    • 2018-03-15
    • 1970-01-01
    • 2014-11-12
    • 2023-03-12
    • 2020-10-06
    • 2020-06-23
    • 2018-02-11
    相关资源
    最近更新 更多