给定一个简单的DataFrame,它作为整数,A列中的浮点数和B列中的两个整数:
In [1]: df = pd.DataFrame([{'A': 100, 'B': 200}, {'A': 20.5, 'B': 20}])
In [2]: df
Out[2]:
A B
0 100.0 200
1 20.5 20
由于A列包含一个浮点数,因此pandas将其dtype猜为float64
,而将B列的dtype猜为int64
:
In [3]: df.dtypes
Out[3]:
A float64
B int64
dtype: object
现在,当我将A列的dtype转换为int
时,我得到以下结果:
In [4]: df.A.astype('int')
Out[4]:
0 100
1 20
Name: A, dtype: int32
列20.5
的浮点值会自动截断为整数20
。但是,我宁愿在尝试将float转换为整数时引发异常,因此我知道该列包含非整数值。
有什么方法可以实现这个目标吗?一种快速的方法也适用于数百万行。