Панды: чтение большого CSV с переменной меткой времени - PullRequest
0 голосов
/ 31 августа 2018

У меня есть файл журнала в день, который помещается в мою локальную сеть на http-сервере, который увеличивается до 3 МБ в день. Каждые 15 секунд новые значения записываются в этот файл. У него есть столбец отметки времени. Есть много других столбцов, которые мне не нужны, поэтому мне нужно только около 5 столбцов. Панды должны «отслеживать» этот файл, читая только новые записи. Допустим, последнее выполнение было 2018-02-05 00: 00: 04.467, тогда это должен быть фильтр для следующего времени выполнения (> 2018-02-05 00: 00: 04.467), а в конце этого времени выполнения последнее чтение метки времени должно быть фильтр для следующего и так далее ... Я новичок в пандах и не нашел подобной темы для этого.

1 Ответ

0 голосов
/ 31 августа 2018

Полагаю, что CSV будет записываться построчно, поэтому вместо чтения всего файла и фильтрации вы можете накапливать количество строк в файле в переменной rows, а для следующего запуска использовать read_csv передавая необязательный аргумент skiprows со значением range(1, rows + 1), чтобы пропустить первые строки в файле, а затем увеличивая rows += len(df)

Если data.csv равно

a,b,c
1,2,3
4,5,6
7,8,9
3,2,1
6,5,4

и rows = 2 (т. Е. В последний раз, когда файл читался, он имел 2 строки), затем

df = pd.read_csv("data.csv", usecols=["a", "c"], skiprows=range(1, rows + 1))

будет фреймом данных

   a  c
0  7  9
1  3  1
2  6  4

и вы увеличиваете rows

rows += len(df) # rows now equals 5, so 5 rows would be skipped in the next run
...