我正在尝试使用这种衬里将df列中的浮点数转换为int:
df['id'] = df['id'].map(lambda x: int(x))
但是有些值是NaN会抛出:
ValueError: cannot convert float NaN to integer
我该如何解决?
答案 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))