python如何读取csv文件某几行某几列_关于python:读取.csv文件时,我似乎无法指定列dtypes...
本問題已經有最佳答案,請猛點這里訪問。
一個菜鳥問題(修訂):我讀了一個.csv文件,并嘗試按以下方式指定dtypes:
1
2
3
4
5
6
7
8
9
10
11
12
13
14import 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文件后,我得到:
1
2
3
4
5
6
7
8
9
10df.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作為df讀入,但沒有'dtype'參數,但遇到了同樣的問題。讀取沒有指定dtypes的文件后,我嘗試從現有列創建一個新的整數列,但是'object'dtype似乎也妨礙了這種情況。
我被卡住了。我環顧四周,似乎無法自己弄清楚。
此處的示例輸入.csv文件:(行之間沒有多余的行,我只是試圖使行更具可讀性)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19Phenotype,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
顯示您的.csv。
您在這些列中有NaN個值
同樣,字符串將作為對象存儲,因為字符串沒有固定的長度。
將類型保留在引號中,例如:dtype = { State: str, NumberTested : int, PercentResistant: float})
" ...字符串將作為對象存儲,因為字符串沒有固定的長度"這很有用,我會一直沿這些線看,但是我不喜歡嘗試將對象轉換為int。它似乎可以在線運行,但是一旦我退出該代碼塊,該值就會返回給對象!
我嘗試用單引號將類型括起來,例如str建議,但沒有運氣。,謝謝!
我的確在列中有NaN,所以現在我試圖將它們作為字符串讀取并在代碼中轉換為int,float等。但是一旦執行df [somecolumn] = df [somecolumn] .astype(int)之類的操作,我就會遇到對象恢復為對象的問題
@ALollz我對您的評論進行了一些研究:" ...字符串將作為對象存儲,因為字符串沒有固定的長度。"我的理解是字符串是不可變的...它們是固定的(長度也是如此)并且不能更改。但是,可以對它們進行操作,即將它們復制并附加到其他字符串實例中,但是原始值不能更改。
@AZBlue我的意思是存儲數據的基礎字節的長度,這很重要,因為pandas是基于NumPy構建的。例如,每個int32占用相同數量的字節,無論您的數據幀的值是1還是1523。因此,即使字符串hello固定為5個字符,pandas也沒有固定的字符串類型(這意味著所有條目都將據我所知,這就是為什么一切都成為對象的原因。
您還經常在具有NaN值的整數列中遇到此對象類型,因為numpy當前不支持NaN整數表示形式
我想在使用df.dtypes時看到返回的" str",好吧,.dtypes是一個numpy函數,除數字表示形式以外的任何內容都將作為"對象"返回。 因此,我的值確實是作為字符串讀取的。 h 我在這里找到了答案:無法在python數據框中將列類型從對象轉換為str
此鏈接對像我這樣的新手也很有幫助:如何使用單個命令[Python-Pandas]獲取所有列的數據類型?
總結
以上是生活随笔為你收集整理的python如何读取csv文件某几行某几列_关于python:读取.csv文件时,我似乎无法指定列dtypes...的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: html中使用什么标签做的导航栏_自媒体
- 下一篇: python 并列条形图_python
