【问题标题】:I try to map values to a column in pandas but i get nan values instead我尝试将值映射到 pandas 中的列,但我得到的是 nan 值
【发布时间】:2022-11-30 01:59:23
【问题描述】:

这是我的代码:

mapping = {"ISTJ":1, "ISTP":2, "ISFJ":3, "ISFP":4, "INFP":6, "INTJ":7, "INTP":8, "ESTP":9, "ESTJ":10, "ESFP":11, "ESFJ":12, "ENFP":13, "ENFJ":14, "ENTP":15, "ENTJ":16, "NaN": 17}
q20 = castaway_details["personality_type"]
q20["personality_type"] = q20["personality_type"].map(mapping)

数据框是这样的

   personality_type  
0   INTP     
1   INFP     
2   INTJ    
3   ISTJ     
4   NAN   
5   ESFP    

我想要这样的输出:

   personality_type  
0   8     
1   6     
2   7    
3   1     
4   17   
5   11

然而,我从我的代码中得到的都是 NAN

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    pandas.Series.map 之前尝试 pandas.Series.str.strip

    q20["personality_type"]= q20["personality_type"].str.strip().map(mapping)
    

    # 输出 :

    print(q20)
    
       personality_type
    0                 8
    1                 6
    2                 7
    3                 1
    4                17
    5                11
    

    【讨论】:

      【解决方案2】:

      映射字典中的键 NaN 和数据框中的 NaN 值不匹配。我修改了你字典里的那个。

      df.apply(lambda x: x.fillna('NAN').map(mapping))
      
         personality_type
      0                 8
      1                 6
      2                 7
      3                 1
      4                17
      5                11
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-04
        • 1970-01-01
        • 2016-09-02
        • 2020-08-21
        • 1970-01-01
        • 2023-01-10
        相关资源
        最近更新 更多