我得到以下錯誤爲我的代碼:數據類型「國家」不明白。我相對較新的python,我基本上正在學習如何處理.csv文件。我使用python 3.4和編輯器Canopy。我試圖將csv的數據類型格式化爲字符串和浮點數,但只要我嘗試將字符串類型分配給第一個數據列(col由字 - 國家領導),我就會收到錯誤消息。我試圖將國家分配給相信可以是字符串的「a200」類型。我在這裏做錯了什麼?請清楚,因爲我是新的。數據類型「國家」不明白
的代碼是這樣的:
import csv
import numpy
def open_with_csv(filename):
data = []
with open(filename) as csvin:
file_reader = csv.reader(csvin, delimiter = ',')
for line in file_reader:
data.append(line)
return data
data_from_csv = open_with_csv('C:\Users\user\Desktop\MDR-TB_burden_estimates_2015-05-07.csv')
print (data_from_csv)
FIELDNAMES = ['country', 'iso2', 'iso3', 'iso_numeric', 'year', 'source_mdr_new', 'source_drs_coverage_new', 'source_drs_year_new', 'e_new_mdr_pcnt', 'e_new_mdr_pcnt_lo', 'e_new_mdr_pcnt_hi', 'e_new_mdr_num', 'e_new_mdr_num_lo', 'e_new_mdr_num_hi', 'source_mdr_ret', 'source_drs_coverage_ret', 'source_drs_year_ret', 'e_ret_mdr_pcnt', 'e_ret_mdr_pcnt_lo', 'e_ret_mdr_pcnt_hi', 'e_ret_mdr_num', 'e_ret_mdr_num_lo', 'e_ret_mdr_num_hi', 'e_mdr_num', 'e_mdr_num_lo', 'e_mdr_num_hi']
print (FIELDNAMES)
DATATYPES = [('country','a200'), ('iso2'), ('iso3'), ('iso_numeric'), ('year'), ('source_mdr_new'), ('source_drs_coverage_new'), ('source_drs_year_new'), ('e_new_mdr_pcnt'), ('e_new_mdr_pcnt_lo'), ('e_new_mdr_pcnt_hi'), ('e_new_mdr_num'), ('e_new_mdr_num_lo'), ('e_new_mdr_num_hi'), ('source_mdr_ret'), ('source_drs_coverage_ret'), ('source_drs_year_ret'), ('e_ret_mdr_pcnt'), ('e_ret_mdr_pcnt_lo'), ('e_ret_mdr_pcnt_hi'), ('e_ret_mdr_num'), ('e_ret_mdr_num_lo'), ('e_ret_mdr_num_hi'), ('e_mdr_num'), ('e_mdr_num_lo'), ('e_mdr_num_hi')]
def load_data(filename, d=','):
my_csv = numpy.genfromtxt(filename, delimiter=d, skip_header=1, invalid_raise=False, names= FIELDNAMES, dtype = DATATYPES)
return my_csv
my_csv = load_data('C:\Users\user\Desktop\MDR-TB_burden_estimates_2015-05-07.csv')
你有沒有理由不使用熊貓? – jwilner
對於這種問題,你的'csv'文件(即剪切並粘貼幾行)的一個小樣本很好。它使測試'genfromtxt'設置變得更容易,並嘗試替代方案。 – hpaulj
你爲什麼包含'open_with_csv'代碼 - 如果它運行良好? – hpaulj