如何使用Nan数据将String转换为Int

时间:2019-07-23 08:33:30

标签: python pandas

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

如果该列没有nan数据,则可以使用。 但是,如果nan数据类似于以下代码,则它将无法正常工作。

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

我该怎么办?

1 个答案:

答案 0 :(得分:5)

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

如果可以使用熊猫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')