Python - Получить CSV-контент из URL и анализировать в массив - PullRequest
0 голосов
/ 27 февраля 2019

У меня проблема.

Я хочу получить содержимое файла CSV из URL-адреса, а затем проанализировать его в массив.Вот код, который у меня сейчас есть:

import requests
import pandas as pd
import io

url="https://www.test.com/csv.php"
dataset = requests.get(url, verify=False).content
df = pd.read_csv(io.StringIO(dataset.decode('utf-8')))

data = []
for row in df: # each row is a list
    data.append(row)

Но когда я выполняю этот код, я получаю только первую строку CSV, и значения находятся между этим -> '

['1', '4', '0']

CSV-файл выглядит следующим образом:

1,4,0
0,1,1
1,1,0
0,1,1
1,1,0
0,3,1
1,1,0
0,3,1
1,1,0

И я надеюсь получить такой массив:

[[1,4,0],
 [0,1,1],
 [1,1,0],
 [0,1,1],
 [1,1,0],
 [0,3,1],
 [1,1,0],
 [0,3,1],
 [1,1,0]]

Что я делаю не так?

РЕДАКТИРОВАТЬ:

Использование df.values ​​дает мне следующее:

[[0. 1. 1.]
 [1. 1. 0.]
 [0. 1. 1.]
 ...
 [1. 1. 0.]
 [0. 1. 1.]
 [1. 3. 0.]]

Но, похоже, это не так, потому что первая строка должна быть [1,4,0].Также мне нужен ->, <- в качестве разделителя </p>

Ответы [ 3 ]

0 голосов
/ 27 февраля 2019

Согласно документации pandas, для итерации строк вы должны использовать:

df.iterrows()

, как указано в http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iterrows.html#pandas.DataFrame.iterrows

0 голосов
/ 27 февраля 2019

Когда вы читаете из файла .csv, по умолчанию первая строка считается строкой заголовка.Вы должны указать, что это не так.Итак, добавьте header=None в read_csv.Например:

df = pd.read_csv(io.StringIO(dataset.decode('utf-8')), header=None)

Кроме того, ниже приведен один из способов получения желаемого результата:

data=[]
for r1, r2, r3 in df.values:
    data.append([r1,r2,r3])
0 голосов
/ 27 февраля 2019

Нет необходимости в цикле: .values вернет матрицу

url="https://www.test.com/csv.php"
dataset = requests.get(url, verify=False).content
df = pd.read_csv(io.StringIO(dataset.decode('utf-8')), header=None, sep=',')
data=df.values
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...