【问题标题】:pandas astype(float) returning as intpandas astype(float) 返回为 int
【发布时间】:2021-01-12 05:32:50
【问题描述】:

我正在通过 DataQuest Data Analyst 路径工作,并且正在使用笔记本电脑数据集。我正在尝试将列从字符串转换为浮点数(该列包含以 GHz 为单位的 cpu 处理器速度)。

laptops["processor_speed_ghz"] = laptops["cpu"].str.split().str[-1]
laptops["processor_speed_ghz"] = laptops["processor_speed_ghz"].str.replace("GHz", "")
laptops["processor_speed_ghz"] = laptops["processor_speed_ghz"].astype(float)
print(laptops["processor_speed_ghz"].value_counts())

转换工作完美,除了当我检查新列时,它说类型是int64 而不是float64。不知道我做错了什么。

【问题讨论】:

    标签: python pandas data-cleaning


    【解决方案1】:

    这是预期的,因为函数Series.value_counts 的输出返回计数。因此,获取索引由浮点数填充的系列,系列的值是整数。

    laptops = pd.DataFrame({"processor_speed_ghz":[2.0,3.0, 2.0, 5.0, 3.0, 3.0]})
    print (laptops)
       processor_speed_ghz
    0                  2.0
    1                  3.0
    2                  2.0
    3                  5.0
    4                  3.0
    5                  3.0
    
    print(laptops["processor_speed_ghz"].value_counts())
    3.0    3
    2.0    2
    5.0    1
    Name: processor_speed_ghz, dtype: int64
    
    print(laptops["processor_speed_ghz"].value_counts().index)
    Float64Index([3.0, 2.0, 5.0], dtype='float64')
    

    【讨论】:

      猜你喜欢
      • 2019-08-25
      • 1970-01-01
      • 2017-12-08
      • 2021-03-02
      • 2021-11-02
      • 1970-01-01
      • 2017-03-08
      • 2016-07-19
      • 1970-01-01
      相关资源
      最近更新 更多