Как пропустить несколько строк и прочитать как dataframe в пандах? - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть несколько файлов в TXT.Они разделены табуляцией, но в первых рядах есть мусор.Я должен прочитать все по pd.dataframe, удалить все строки мусора и объединить вместе.

Я читаю файл по этому коду: dataFromRawFile = pd.read_csv ('texttt.txt', sep = ",", header = None) print (dataFromRawFile)

Файлы выглядят как:

[trash]: trash
[trash_umbers]:3224
trash_name
[DATA]
id    number    color
good  good      good
good  good      good
good  good      good 
good  good      good

как я могу изменить эту команду pandas для чтения фрейма данных без всей строки мусора?Допустим, я бы хотел, чтобы файл загружался из единственного фиксированного значения во всех файлах, то есть из «id».Как можно прочитать этот файл по этому конкретному стригну?

Ответы [ 3 ]

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

Во-первых, вам нужно получить номер строки столбца id для каждого файла в каталоге (предполагается, что это все .txt файлы; измените условие соответствующим образом).Это можно сделать следующим образом:

import os

skip_rows = {}

for filename in os.listdir():
    if os.splitext(filename)[1] == '.txt':
        with open(filename) as f:
            lines = f.readlines()
            skip_rows[filename] = [index for index, line in enumerate(lines) if line[:2] == 'id'][0]

Теперь skip_rows должно содержать количество строк, которые нужно пропустить для каждого файла.

Затем вы можете сделать это:

dataframes = {filename: pd.read_csv(filename, skiprows=n_rows) for filename, n_rows in skip_rows.items()}

и считывание каждого элемента в dataframes.

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

Используйте свойство skiprows pandas при использовании метода pd.read_csv().

Скажем, например, что вы хотите иметь всю таблицу для того, чтобы быть в вашем фрейме данных.

Итак, напишитефункция, которая найдет слово «id» в вашем файле.

def get_loc():
with open (filename) as f:
    for num, line in enumerate(f,1):
        if 'word_to_find' in line.strip().lower():
            break
    return num

Это даст вам местоположение.

Тогда просто используйте

df = pd.read_csv(yourfilename, skiprows = getloc()-1)
0 голосов
/ 06 февраля 2019

Используйте skiprows функциональность read_csv или read_table.

В вашем случае попробуйте skiprows=4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...