熊猫-当列中包含NaN值时,将float转换为int

时间:2020-10-24 02:55:40

标签: pandas

我正在尝试使用这种衬里将df列中的浮点数转换为int:

df['id'] = df['id'].map(lambda x: int(x))

但是有些值是NaN会抛出:

ValueError: cannot convert float NaN to integer

我该如何解决?

1 个答案:

答案 0 :(得分:2)

NaN本身是浮点型的,不能转换为通常的int。您可以将pd.Int64Dtype()用于可为空的整数:

# sample data:
df = pd.DataFrame({'id':[1, np.nan]})

df['id'] = df['id'].astype(pd.Int64Dtype())

输出:

     id
0     1
1  <NA>

另一种选择是使用apply,但是该列的dtype将是object而不是数字/整数:

df['id'] = df['id'].apply(lambda x: x if np.isnan(x) else int(x))