导入CSV文件并附加到数组

2024-05-03 04:53:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个csv文件,格式如下:

Image Id,URL,Latitude,Longitude
17609472165,https://farm8.staticflickr.com/7780/17609472165_c44d9b5a0e_q.jpg,48.843226,2.31805
11375512374,https://farm6.staticflickr.com/5494/11375512374_66a4d9af6c_q.jpg,48.844166,2.376
24768920940,https://farm2.staticflickr.com/1571/24768920940_634cc06f43_q.jpg,48.844619,2.395897
9411072065,https://farm8.staticflickr.com/7368/9411072065_5e2083a32e_q.jpg,48.844666,2.3725
9996916356,https://farm3.staticflickr.com/2807/9996916356_640c493020_q.jpg,48.844666,2.3725
24281266199,https://farm2.staticflickr.com/1623/24281266199_bf63e25c23_q.jpg,48.844925,2.389616

我想导入这个文件,并为文件中的每一行附加一个点lat和lon到一个2D数组。我尝试过下面这样的代码,但它不能工作(或打印任何内容),并给出错误“ValueError:除了连接轴之外的所有输入数组维度必须完全匹配”

^{pr2}$

有人能告诉我为什么这不起作用,或者更好地提出一个更好的方法来实现同样的目标吗。谢谢!在


Tags: 文件csvhttpsimagecomidurl格式
3条回答

所以,基本上你需要csv文件中的lat和long数据,对吗?我建议您使用pandas'read_csv(),这样就不需要逐行循环文件了。熊猫可以同时处理所有列。在

import pandas as pd

file_ = pd.read_csv("dataset_import_noaddress", sep = ',')
A = np.array(file_[["Latitude", "Longitude"]])
print A

array([[ 48.843226, 2.31805 ], [ 48.844166, 2.376 ], [ 48.844619, 2.395897], [ 48.844666, 2.3725 ], [ 48.844666, 2.3725 ], [ 48.844925, 2.389616]])

你只需要把你的csv读入一个矩阵,每行都有纬度,经度。所以基本上看,删除前2列

编码

import numpy as np

input = np.genfromtxt(open("dataset.csv","rb"),delimiter=",", skip_header=1)
A = np.delete(input, [0,1], 1)

print(A)

它只读取csv所有非浮点值转换为nan。然后用np.删除在

输出

^{pr2}$

首先,您通常希望使用with open(filename, 'r') as ...:格式。其中一个原因是,如果遇到错误,文件将自动关闭。在

通常使用csv.reader来读取Python中的csv文件(尽管您也可以使用pd.read_csv文件(…)如果你用熊猫的话)。然后需要使用for line in reader:遍历读卡器。在

您将获得单个变量并创建中间列表,使用纽比.vstack对于每一行。将所有内容聚合为一个列表,然后对整个列表调用vstack会更有效。在

A.append(line[2:4])从给定行的列表中获取第三项和第四项(例如[48.843226,2.31805]),并将其附加到较大的列表A中。在追加之前,应首先确保行至少有四个值,跟踪坏行。在

一旦构建了一个,就可以调用vstack。在

import csv

with open(filename, 'r') as f:
    A = []
    bad_lines = []
    reader = csv.reader(f)
    for line in reader:
        if len(line) == 4:
            A.append(line[2:4])
        else:
            bad_lines.append(line)
    A = np.vstack(A)

相关问题 更多 >