首页 > 解决方案 > DataFrame.astype() 错误参数

问题描述

astype使用. ValueError_dict of columns

我正在尝试将大 DF 中的稀疏列的类型(从浮点数转换为整数)。我的问题是NaN价值观。即使errors参数设置为,在使用列的字典时它们也不会被忽略'ignore'

这是一个玩具示例:

t=pd.DataFrame([[1.01,2],[3.01, 10], [np.NaN,20]])
t.astype({0: int}, errors='ignore')

ValueError:无法将非有限值(NA 或 inf)转换为整数

标签: pythonpandas

解决方案


您可以在 pandas 0.24.0+中使用新的可为空整数dtype。在使用之前,您首先需要将任何不完全等于整数的浮点数转换为等于整数值(例如舍入、截断等)astype

In [1]: import numpy as np; import pandas as pd; pd.__version__
Out[1]: '0.24.2'

In [2]: t = pd.DataFrame([[1.01, 2],[3.01, 10], [np.NaN, 20]])

In [3]: t.round().astype('Int64')
Out[3]:
     0   1
0    1   2
1    3  10
2  NaN  20

推荐阅读