Python 我能';在读取.csv文件时,似乎无法指定列数据类型

Python 我能';在读取.csv文件时,似乎无法指定列数据类型,python,pandas,csv,Python,Pandas,Csv,noob问题(修订版):我读入了一个.csv文件,并尝试指定数据类型,如下所示: import csv import pandas as pd cdc = pd.read_csv('myFile.csv', dtype = { 'Phenotype': str, 'State': str, 'EventType': str, 'EventYear': str, 'AgeCategory': str, 'NumberTested' : str, 'NumberResistant': str,

noob问题(修订版):我读入了一个.csv文件,并尝试指定数据类型,如下所示:

import csv
import pandas as pd

cdc = pd.read_csv('myFile.csv', 
dtype = {
'Phenotype': str,
'State': str,
'EventType': str,
'EventYear': str,
'AgeCategory': str,
'NumberTested' : str,
'NumberResistant': str,        
'PercentResistant': str
 })
但在读取df文件后,我得到:

df.dtypes

Phenotype           object
State               object
EventType           object
EventYear           object
AgeCategory         object
NumberResistant     object
PercentResistant    object
dtype: object
我想我应该为每一列获取字符串的数据类型

我希望将每一列作为字符串来阅读,因为有些列混合了数字和字符串,您将在下面的.csv示例文件中看到这一点。一旦文件被读入,我就可以开始操作该死的东西了

一句话:我想清理数据行,用NaN或零替换“未测试”和“未定义”。无论如何,我不能用我能弄明白的“对象”来做这件事

仅供参考,我在.csv中读到了没有“dtype”参数的df,但我遇到了同样的问题。在没有指定数据类型的情况下读取文件后,我尝试从现有列创建一个新的整数列,但“object”数据类型似乎也阻碍了这一点

我卡住了。我环顾四周,似乎自己也不明白这一点

此处的示例input.csv文件:(行之间没有多余的行,我只是尝试使行更可读)

表型、状态、事件类型、事件年、年龄类别、NumberTested、NumberResistant、PercentResistant
不动杆菌,AK,所有HAIs,2011年,1-18,2,1,0.5
不动杆菌,AK,CAUTI,2011年,1-18,0,未检测,未定义
不动杆菌,AK,CLABSI,2011,1-18,0,未检测,未定义
不动杆菌,AK,SSI,2011,1-18,0,未检测,未定义

Acinetobacter,AK,All HAIs,2011,我想看到在使用df.dtypes时返回'str',嗯,.dtypes是一个numpy函数,除数字表示以外的任何内容都将作为'object'返回。因此,我的值确实是作为字符串读取的。Doh。我在这里找到了答案:


这个链接对像我这样的新手也很有帮助:

显示你的.csv。这些列中通常有
NaN
值。因此,字符串将作为对象存储,因为字符串没有固定的长度。@AZBlue我指的是存储数据的底层字节的长度,这很重要,因为pandas是基于NumPy构建的。例如,无论数据帧的值是1还是1523,每个int32占用相同的字节数。因此,尽管字符串“hello”固定为5个字符,但据我所知,pandas没有固定的字符串类型(意味着所有条目的字符数都相同),这就是为什么所有内容都成为一个对象的原因。您还会经常在带有NaN值的整列中遇到这种对象类型,因为numpy当前不支持NaN整数表示
Phenotype,State,EventType,EventYear,AgeCategory,NumberTested,NumberResistant,PercentResistant

Acinetobacter,AK,All HAIs,2011, 1-18,2,1,0.5

Acinetobacter,AK,CAUTI,2011, 1-18,0,None Tested,Not Defined

Acinetobacter,AK,CLABSI,2011, 1-18,0,None Tested,Not Defined

Acinetobacter,AK,SSI,2011, 1-18,0,None Tested,Not Defined

Acinetobacter,AK,All HAIs,2011,<1,2,2,1.0

Acinetobacter,AK,CAUTI,2011,<1,0,None Tested,Not Defined

Acinetobacter,AK,CLABSI,2011,<1,0,None Tested,Not Defined

Acinetobacter,AK,SSI,2011,<1,0,None Tested,Not Defined

Acinetobacter,AK,All HAIs,2011,19-64,(1-19),Insufficient Data,Insufficient Data