Использование панд для чтения файла данных без структуры (без строки заголовка и строк разной длины)

Обычно эта ошибка возникает, когда мы отправляем заголовок после эха или печати. Если эта ошибка возникает на определенной странице, убедитесь, что страница не выполняет эхо-сигналы перед вызовом start_session().

Пример непредсказуемой ошибки:

 <?php //a white-space before <?php also send for output and arise error
session_start();
session_regenerate_id();

//your page content

Еще один пример:

<?php
includes 'functions.php';
?> <!-- This new line will also arise error -->
<?php
session_start();
session_regenerate_id();

//your page content

Вывод: не выводить символ перед тем, как вызывать функции session_start() или header(), даже не с помощью пробела или новой строки

0
задан Etienne Caronan 5 March 2019 в 16:28
поделиться

1 ответ

Это вариант панды в ответе Рафаэля.

Панды read_csv могут читать одну строку из файла, благодаря параметрам skiprows и nrows. Сложная часть заключается в том, как найти случайный номер строки ...

Итак, простой способ - прочитать все строки из входного файла, выбрать случайную строку и вставить эту строку в кадр данных:

import pandas as pd
import random
import io

with open("someurl.dat") as fd:
    line = random.choice(fd.readlines)

df = pd.read_csv(io.StringIO(line), sep='\s+', header=None)

Кстати, ваш код не может дать вам ожидаемый кадр данных. С

market_basket = pd.read_csv(data_url, header=None, delimiter='\n+', engine="python")
sample = market_basket.sample(n=1)

market_basket - это DataFrame с одним столбцом, содержащим полные строки, проиндексированные по номеру их строки в файле. Итак, sample - это 40911-я строка, содержащая 39 2787 2858 5016 5041 13569. Чтобы разобрать его, вам все равно нужно сначала извлечь текущее поле (.iloc[0][0]) и разделить его:

sample = pd.read_csv(io.StringIO(sample.iloc[0][0]), sep='\s+', header=None)
0
ответ дан Serge Ballesta 5 March 2019 в 16:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: