我正在尝试读取一个csv文件
df = pd.read_csv('Salaries.csv')
我有这个:
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})
现在我有了这个:
回溯(最近一次通话最后一次):文件“ pandas_libs \ parsers.pyx”,行1156,在 pandas._libs.parsers.TextReader._convert_tokens TypeError:无法转换 根据规则“安全”从dtype('O')到dtype('float64')的数组
我还阅读了以前的问题和官方文档,但不知道问题出在哪里。
以下是Salaries.csv中的数据示例
Id,EmployeeName,JobTitle,BasePay,OvertimePay,OtherPay,Benefits,TotalPay,TotalPayBenefits,年,便笺,代理商,状态
1,NATHANIEL FORD,总经理-大都市运输管理局,167411.18,0.0,400184.25,,567595.43,567595.43,2011,旧金山,
答案 0 :(得分:-1)
您的数据框中可能有nan值。因此,当您指定dtype时,请确保已在所有列中填充了一些值,以避免该列混用dtype。
例如:
column_name
np.nan
1
2
3
在将此df写入csv之前,用df.column_name.fillna(0, inplace=True)
填充此nan值。
因此,每当您使用pd.read_csv
再次阅读此df时,都不会有问题。