在.csv文件中读取时,我似乎无法指定列dtypes

时间:2018-04-08 23:00:35

标签: python pandas csv

一个菜鸟问题(修订版):我读了一个.csv文件,我尝试指定dtypes,如下所示:

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

我想我会为每一列获得字符串的dtypes。

我希望每个列都作为字符串读取,因为有些列有数字和字符串的混合,如下面的.csv示例文件中所示。一旦读入文件,我就可以开始操纵天哪了!

底线:我想清理数据行,并用NaN或零替换“None Tested”和“Not Defined”。无论如何,我无法用“对象”来做到这一点,无论如何。

仅供参考,我已经在.csv中读取了没有'dtype'参数的df,但我遇到了同样的问题。在没有指定dtypes的情况下读取文件之后,我尝试从现有列创建一个新的整数列,但是'object'dtype似乎也妨碍了它。

我被困住了。我环顾四周,似乎无法自己解决这个问题。

示例输入.csv文件:(行之间没有多余的行,我只是试图使行更具可读性)

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

1 个答案:

答案 0 :(得分:1)

我想看看&#39; str&#39;当我使用df.dtypes时返回,好吧,.dtypes是一个numpy函数,除了数字表示之外的任何东西都将作为&#39; object返回。&#39;所以,我的值确实被读作字符串。卫生署。我在这里找到了答案:can not convert column type from object to str in python dataframe

此链接对我这样的新手也有帮助:How to get datatypes of all columns using a single command [ Python - Pandas ]?