#python #csv #pandas #numpy #data-analysis
#python #csv #pandas #numpy #анализ данных
Вопрос:
Я пытаюсь прочитать файл, в котором столбцы разделены переменными пробелами. Мне было интересно, есть ли способ прочитать файл, определив ширину каждого столбца в терминах количества символов, зарезервированных для этого столбца.
Например:
A B C D
- ---------- -- ---
1 foo 32 9.5
4 bar 5.4
5 foofoo_bar 44
Допустим, нам нужно прочитать приведенные выше данные. Обратите внимание, что некоторые записи не существуют в столбцах C и D. Однако обратите внимание, что вторая строка в файле (та, что с тире) указывает максимальное количество символов, которое может содержать конкретный столбец.
Итак, вопрос задается максимальной шириной каждого столбца в наборе данных, есть ли способ прочитать набор данных в python с помощью pandas или любого другого пакета?
Ответ №1:
Вы должны использовать pandas.read_fwf()
. Это означает чтение файла фиксированной ширины.
Комментарии:
1. Это отличная функция. К сожалению, данные, для которых я опубликовал этот вопрос, отчасти повреждены, поэтому даже эта функция там не работает. Но он работал с аналогичным неповрежденным набором данных, который был отформатирован точно так же. Спасибо за ответ!
2. По умолчанию он попытается определить размер столбца фиксированной ширины. Для воспроизводимости вам может потребоваться узнать, каковы предполагаемые спецификации, которые вы можете получить с помощью:
pd.io.parsers.FixedWidthReader(path.open(mode="r"), colspecs="infer", delimiter=None, comment=None).colspecs
Ответ №2:
delimiter
For np.genfromtxt
может быть списком ширин столбцов вместо символа-разделителя.