为什么我在 Pandas 中的数据框列不会从浮点数转换为整数?

问题描述

我正在尝试将一列从 float 转换为 int。当我执行脚本时,我没有收到错误;但是, float dtype 仍然存在。我做错了什么?

数据集以 pdf 格式读入,并使用 tabula 转换为 csv。

apd_log = pd.read_csv('/home/d/my_datasets/police_log.csv')
apd_log = apd_log.astype({'Incident #': int},errors='ignore')
apd_log.dtypes

Incident #       float64
Date              object
Time              object
Address           object
Incident Type     object
Action Taken      object
dtype: object

解决方法

Pandas 0.24.0 开始,您有一个 solution 可以将 float 转换为 integer 并保留空值。
使用数据类型 pd.Int64Dtype(或 "Int64")。

>>> df['Incident #']
0    9.0
1    1.0
2    NaN
3    2.0
4    3.0
Name: Incident #,dtype: float64

>>> df['Incident #'].astype(int)  # raise an exception without errors='ignore'
...
ValueError: Cannot convert non-finite values (NA or inf) to integer

>>> df['Incident #'].astype("Int64")
0       9
1       1
2    <NA>
3       2
4       3
Name: Incident #,dtype: Int64

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...