Pandas read_csv low_memory 和 dtype 选项。TypeError:无法根据规则“安全”将数组从 dtype('O') 转换为 dtype('float64')

oli*_*kmd 5 python csv dataframe python-3.x pandas

我正在尝试读取 csv 文件

df = pd.read_csv('Salaries.csv')
Run Code Online (Sandbox Code Playgroud)

我有这个:

sys:1: DtypeWarning: 列 (3,4,5,6,12) 具有混合类型。在导入时指定 dtype 选项或设置 low_memory=False。

所以,我尝试过:

df = pd.read_csv('Salaries.csv', sep=',', dtype={
'Id': int, 
'EmployeeName': str, 
'JobTitle': str, 
'BasePay': float,
'OvertimePay': float, 
'OtherPay': float, 
'Benefits': float, 
'TotalPay': np.float64,
'TotalPayBenefits': np.float64,
'Year': np.int64,
'Notes': np.float64,
'Agency': str,
'Status': float})
Run Code Online (Sandbox Code Playgroud)

现在我有这个:

回溯(最近一次调用最后):文件“pandas_libs\parsers.pyx”,第1156行,在pandas._libs.parsers.TextReader._convert_tokens TypeError:无法根据dtype('O')将数组转换为dtype('float64')遵守“安全”规则

我也阅读了之前提出的问题和官方文档,但不明白问题出在哪里。

以下是 Salaries.csv 中的数据示例

ID、员工姓名、职务、基本工资、加班工资、其他工资、福利、总工资、总工资福利、年份、备注、机构、状态

1,纳撒尼尔·福特 (NATHANIEL FORD),大都会交通管理局总经理,167411.18,0.0,400184.25,,567595.43,567595.43,2011,,旧金山,