我在python中使用for循环将csv文件中的值转换为整数和浮点数,然后将它们放入代码本身的列表中,但问题是csv文件不仅有数字,而且前面还有单词每个数据行 例如。 1998 年......
我尝试弹出它,但它不起作用,因为 for 循环无法按预期运行,因为我之前说过,而且我无法更改 csv 文件,而且我不知道如何正确修复它
with open("C:/Users/yuhon/Downloads/sgexports_dataset.csv") as openfile:
csvreader = csv.reader(openfile)
next(csvreader)
years = []
americaExports = []
asiaExports = []
europeExports = []
oceaniaExports = []
africaExports = []
euExports = []
for row in csvreader:
years.append(int(row[0]))
americaExports.append(float(row[1]))
asiaExports.append(float(row[2]))
europeExports.append(float(row[3]))
oceaniaExports.append(float(row[4]))
africaExports.append(float(row[5]))
euExports.append(float(row[6]))
这是 csv 文件
Area,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
America,30407.5,31517.7,33185.2,26015.3,26942.1,28082.6,29964.2,30481.6,35900.7,39597.6,38459.6,32154.4
Asia,50197.3,56987.4,73466.9,66382,67224.1,89338.3,107412.6,127210.4,137654.4,140908.6,149612.6,122946.2
Europe,21386.8,22748.6,22519.8,19921.3,18503.2,24347.6,30307,32611.5,34668,34695.2,33286.6,26648.6
Oceania,2938.3,3979,5001.8,4859.3,5323.4,7024.5,10203.1,14154.8,15486.2,15555,18965.2,13468
Africa,987.7,1092.3,1764.4,1266.5,1444.7,1764.9,2313.5,2989.4,3668.6,4146.7,7293.9,4786
European Union,20875.6,22289.8,21868.6,19233.2,17916.9,23591.8,29273.1,31543.5,32923.4,33233.6,31713.5,24840.8
正如您在上面的数据中看到的,每行开头都有一个单词,我不确定如何跳过每行的第一个元素,因为列表应该只有整数,我无法更改 csv 文件如果我不使用整数和浮点列表,我的其余代码将无法工作
您无法真正按照您处理该文件的方式处理该文件。目前尚不完全清楚您想要最终得到什么数据结构,但我建议类似:
exports = {
'America': {1998: 30407.5, 1999: 31517.7, ...},
'Asia': {1998: 50197.3, ...},
...
}
要从 CSV 文件获取该数据结构,代码如下:
exports = {}
with open(".../sgexports_dataset.csv") as f:
reader = csv.reader(f)
headers = next(reader)
years = list(map(int, headers[1:])) # [1998, 1999, ...]
for row in reader:
exports[row[0]] = dict(zip(years, map(float, row[1:])))
您的方法是错误的,因为列和行的处理方式错误。每一行都是一个区域,而不是每一列。