Pandas:在保留NaN的同时,向int抛出一个float列



我有这样的数据:

df = pd.DataFrame({ 'val1': [5.3, np.nan, 2.0, 1.2, 5]})
print(df)
val1
0   5.3
1   NaN
2   2.0
3   1.2
4   5.0

我知道我可以使用astype((来转换列的数据类型。我知道的目标数据类型的两种可能性是:intpd.Int64Dtype()

然而,对于int,我对NaN值有问题(我确实想保留NaN,而不是用任何其他值填充它们(:

df = df.astype({'val1': 'int'})
ValueError: Cannot convert non-finite values (NA or inf) to integer

而对于pd.Int64Dtype(),我遇到了浮点值的问题,必须将其强制转换为int:

df = df.astype({'val1':pd.Int64Dtype()})
TypeError: cannot safely cast non-equivalent float64 to int64

如何将浮点值投射到int并保留NaN?

编辑:我误解了这个问题,
def cast(x):
try:
return float(x)
except ValueError:
return None
df = df.apply(cast)

相关内容

最新更新