提取要在Python中列出的csv文件特定列

时间:2013-10-21 04:39:40

标签: python csv numpy matplotlib

我要做的是使用matplotlib,basemap,python等在地图上绘制特定风暴的纬度和经度值。我的问题是我正在尝试提取纬度,经度和名称地图上的暴风雨,但我一直在第41-44行之间得到错误,我试图将列提取到列表中。请有人帮我解决这个问题。提前谢谢。

这是文件的样子:

1957,AUDREY,HU, 21.6N, 93.3W
1957,AUDREY,HU,22.0N,  93.4W
1957,AUDREY,HU,22.6N,  93.5W
1957,AUDREY,HU,23.2N,  93.6W

我希望列表如下所示:

latitude = [21.6N,22.0N,23.4N]
longitude = [93.3W, 93.5W,93.8W]
name = ["Audrey","Audrey"]

这是我到目前为止所拥有的:

data = np.loadtxt('louisianastormb.csv',dtype=np.str,delimiter=',',skiprows=1)
'''print data'''

data = np.loadtxt('louisianastormb.csv',dtype=np.str,delimiter=',',skiprows=0)

f= open('louisianastormb.csv', 'rb')
reader = csv.reader(f, delimiter=',')
header = reader.next()
zipped = zip(*reader)

latitude = zipped[3]
longitude = zipped[4]
names = zipped[1]
x, y = m(longitude, latitude)

这是我收到的最后一条错误消息/追溯:

  

追踪(最近的呼叫最后):
  文件“/home/darealmzd/lstorms.py”,第42行,

     

header = reader.next()
  _csv.Error:在未引用字段中看到的换行符 - 您是否需要以通用换行模式打开文件?

3 个答案:

答案 0 :(得分:49)

这看起来像代码中的行结尾有问题。如果你将要使用所有这些其他科学软件包,你也可以使用Pandas作为CSV阅读部分,这比csv模块更强大,更有用:

import pandas
colnames = ['year', 'name', 'city', 'latitude', 'longitude']
data = pandas.read_csv('test.csv', names=colnames)

如果您想要问题中的列表,您现在可以:

names = data.name.tolist()
latitude = data.latitude.tolist()
longitude = data.longitude.tolist()

答案 1 :(得分:34)

标准-lib版本(无熊猫)

这假设csv的第一行是标题

import csv

# open the file in universal line ending mode 
with open('test.csv', 'rU') as infile:
  # read the file as a dictionary for each row ({header : value})
  reader = csv.DictReader(infile)
  data = {}
  for row in reader:
    for header, value in row.items():
      try:
        data[header].append(value)
      except KeyError:
        data[header] = [value]

# extract the variables you want
names = data['name']
latitude = data['latitude']
longitude = data['longitude']

答案 2 :(得分:0)

import csv
from sys import argv

d = open("mydata.csv", "r")

db = []

for line in csv.reader(d):
    db.append(line)

# the rest of your code with 'db' filled with your list of lists as rows and columbs of your csv file.