【问题标题】:How can I convert a float type data set with missing data to int?如何将缺少数据的浮点型数据集转换为 int?
【发布时间】:2020-09-06 00:36:53
【问题描述】:
print(movie_idname['rating'])

我想将其转换为所有 int 数字,这些是我尝试过的一些代码:

for rating in movie_idname:
    if rating == float:
        int_rating = movie_idname['rating'].astype(int)
        print(int_rating)
        break

没有收到错误但不起作用

int_rating = movie_idname['rating'].astype(int)

ValueError: int() 基数为 10 的无效文字:'4.0'

--> 这是评级数据集的样子 print(movie_idname['rating'])

0        4.0
1        5.0
2        5.0
3        4.0
4        4.0
        ... 
82624    3.0
82625    4.5
82626    4.0
82627    5.0
82628    4.5
Name: rating, Length: 82629, dtype: object

【问题讨论】:

    标签: python pandas numpy jupyter-notebook


    【解决方案1】:

    你所做的应该有效。您是否忘记查看 int_rating?您没有将其分配回日期框架,例如 movie_idname['int_rating'] = ...

    试试这个,例如:

    import pandas as pd
    from random import uniform
    
    movie_idname = pd.DataFrame({
        'rating': [uniform(0, 10) for _ in range(100)]
    })
    
    print(movie_idname)
    
          rating
    0   6.032252
    1   0.492256
    2   7.474722
    3   0.175150
    4   7.286012
    ..       ...
    95  1.385851
    96  9.070880
    97  7.222838
    98  4.941222
    99  1.443023
    
    movie_idname['rating_int'] = movie_idname['rating'].astype(int)
    print(movie_idname)
    
          rating  rating_int
    0   6.032252           6
    1   0.492256           0
    2   7.474722           7
    3   0.175150           0
    4   7.286012           7
    ..       ...         ...
    95  1.385851           1
    96  9.070880           9
    97  7.222838           7
    98  4.941222           4
    99  1.443023           1
    

    【讨论】:

    • 太棒了!如果我回答了您的问题,请单击此答案左侧的灰色复选标记以将其标记为已接受。
    【解决方案2】:

    您有一系列 字符串(因此您的输出显示为 dtype: object),它们看起来像浮点数。那些不能直接转换成int,但是如果你一路转换成float就可以做到:

    >>> import pandas as pd
    >>> pd.Series(["1.0", "2.5"])
    0    1.0
    1    2.5
    dtype: object
    >>> pd.Series(["1.0", "2.5"]).astype(int)
    Traceback (most recent call last):
    ...
    ValueError: invalid literal for int() with base 10: '1.0'
    >>> pd.Series(["1.0", "2.5"]).astype(float)
    0    1.0
    1    2.5
    dtype: float64
    >>> pd.Series(["1.0", "2.5"]).astype(float).astype(int)
    0    1
    1    2
    dtype: int64
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-22
      • 1970-01-01
      • 2014-02-04
      • 2014-09-03
      • 1970-01-01
      • 2016-06-25
      • 1970-01-01
      • 2021-10-08
      相关资源
      最近更新 更多