【问题标题】:How to convert String to Int with Nan data如何使用 Nan 数据将 String 转换为 Int
【发布时间】:2019-07-23 08:33:30
【问题描述】:

我想将字符串数据转换为 int 以将小数点删除为 Integer。 它在数据框中有浮点格式的数据。

如果该列没有 nan 数据,它可以工作。 但是,如果 nan data 像下面的代码,它就不起作用了。

df = pd.Dataframe([[1, '1.0'], [2, ''], [3, '2.8']],
                  columns=['id', 'number'])
df.loc[:, 'number'] = df['number'].astype(float).astype(int)

我该怎么做?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    首先使用to_numeric 将非数字转换为NaNs。

    如果使用 pandas 0.24+ 可以使用Nullable integer data type

    #get values before `.`
    s = df['number'].str.split('\.').str[0]
    df['number'] = pd.to_numeric(s, errors='coerce').astype('Int64')
    

    或者使用np.floor:

    df['number'] = pd.to_numeric(df['number'], errors='coerce').apply(np.floor).astype('Int64')
    

    或者:

    df['number'] = np.floor(pd.to_numeric(df['number'], errors='coerce'))
    df['number'] = df['number'].astype('Int64')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-04
      • 2014-02-21
      • 2012-11-22
      • 2011-05-29
      • 2011-11-19
      • 2011-12-01
      • 1970-01-01
      • 2014-07-29
      相关资源
      最近更新 更多