我正在尝试将.csv数据输入python。
这是我的代码如下所示:
import csv
revenue = {}
prices = []
for i in range(1,21):
prices.append(i)
prices = tuple(prices) #convert to tuple to make immutable and faster
with open("test.csv") as file_handle:
file_reader = csv.reader(file_handle)
file_handle.readline()
file_handle.readline() #skip first 2 lines due to column header titles
for row in file_reader:
revenue[prices] = row[1] #assign revenue at each price-point
print revenue
print revenue[10]
这就是.csv数据的样子,即我的输入。
0.01 1397371
0.02 1350610
0.03 1306431
0.04 1136959
0.05 1106950
0.06 1064727
0.07 1037497
0.08 1030768
0.09 976552
0.1 963091
0.11 949641
0.12 917551
0.13 884734
0.14 878675
0.15 775261
0.16 765643
0.17 756057
0.18 733458
0.19 723077
0.2 654178
第一列是价格,第二列是收入。因为我选择的价格始终相同,所以实际上我忽略了数据,只是创建了一个整数形式的价格列表,然后将其转换为元组(因为我读到如果数据是不可变的,元组将更快地处理) 。
问题:如果我打印收入[10],我想查看963091。相反,我得到KeyError:20。
当我打印收入时,我希望所有价格和相关收入都将被打印,相反,我会打印整个价格列表,然后是列表中最后一个价格(0.2)的最终收入值654178。
我是python的新手,所以我对菜鸟的问题深表歉意,我一直在阅读并尝试弄清楚这一点,但我仍在努力–我对方法的任何建议也很欢迎,我可以使用我所能获得的所有帮助。
提前致谢!
最佳答案
revenue[prices] = row[1]
不会插入row的值(这是一个单项列表),而是使用元组本身。
>>> revenue[prices] = ''
>>> revenue
{(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20): ''}
with open("test.csv") as file_handle:
file_reader = csv.reader(file_handle)
file_handle.readline()
file_handle.readline() #skip first 2 lines due to column header titles
for row in file_reader:
revenue[int(float(row[0].split()[0]) * 100)] = row[0].split()[1] #assign revenue at each price-point
要将行转换为价格和收入,请选择第一个项目(唯一),将其拆分为价格和收入,然后将小数点价格转换为整数。