【发布时间】:2013-08-06 16:20:47
【问题描述】:
我正在尝试对包含 21 列和很多行的数据集进行分类。我已经到了可以将数据导入为 csv 并打印出单独的列的地步。我还有两件事要做。首先,我希望能够打印出特定的数据点。例如,位于第 2 行第 4 列的数据点。第二个任务是根据第 4 列和第 5 列对数据行进行分类。这些列是纬度和经度。我正在尝试获取位于世界特定区域的行。所以我的想法是这样的
if 60 > row[4] > 45 and 165 > row[1] > 150:
ie(就像数学运算 (9 > x > 5))
我不确定执行上述过程的正确方法是什么。
我已将代码粘贴到底部。我是python编程的新手,所以请随时指出错误。
import csv
path = r'C:\Documents and Settings\eag29278\My Documents\python test code\test_satdata.csv'
with open(path, 'rb') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
print row [0]
#this prints out the first column
var1 = []
for row in f:
if 60 > row[4] > 45 and 165 > row[1] > 150:
var1.append(row)
print var1
更新 1
好的,所以我更新了代码,但是当我运行模块时,我得到了这个输出..
2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 []
所以我看到程序打印出 var1 但它是空的
【问题讨论】:
-
9 > x > 5在 python 中工作正常。 -
看起来你的代码应该完全按照你想要的那样做。所以……你有问题吗?如果您只想查看工作代码,请使用 Code Review,而不是 Stack Overflow。
-
我猜代码审查是专门用于故障排除的网站?
-
for row in f将为每一行生成一个str对象,这就是为什么没有附加任何行的原因。60 > 'foo' > 45在 Python 中不会引发异常——它只会返回 False。 -
@erik.garcia294 不,CodeReview 适用于你有工作代码,但你认为它可以写得更干净或运行得更快的时候。
标签: python csv classification