2016-10-26 2 views
1

У меня есть текстовый файл, отформатированный таким образом:Как прочитать текстовый файл, разделенный пробелами, в DataFrame?

A00  0010 00000 
A001 0011 00000 
A00911 0019 00000 
A0100 0020 10000 

Я хочу, чтобы прочитать этот файл в DataFrame. Поэтому я пробовал:

import pandas as pd 
path = *file path* 
df = pd.read_csv(path, sep = '\t', header = None) 

Что я получил, это DataFrame с 4 строками и одним столбцом.

      0 
0  A00  0010 00000 
1  A001 0011 00000 
2  A00911 0019 00000 
3  A0100 0020 10000 

[4 rows x 1 columns] 

Это потому, что значения не разделены «\ t». Количество пробелов между столбцами изменяется в каждой строке в зависимости от длины строки.

Желаемый DataFrame должен иметь четыре строки и три столбца.

  0  1  2 
0  A000 0010 00000 
1  A001 0011 00000 
2  A009 0019 00000 
3  A0100 0020 10000 

[4 rows x 3 columns] 
+0

Прошло некоторое время с тех пор, как я коснулся панд, но если вы используете '' '' inste объявление '' \ t'', не работает ли оно? –

+0

Нет, я попробовал это. –

+3

Используйте 'delim_whitespace':' pd.read_csv (data, delim_whitespace = True, header = None, dtype = str) ' –

ответ

5

Вы могли бы поставить delim_whitespace=True вместе с dtype=str сохранить dtypes арг в read_csv, как:

df = pd.read_csv(path, delim_whitespace=True, header=None, dtype=str) 
df 

Image

1

пытаются использовать регулярное выражение в команде "разделительным"

df = pd.read_csv(path, sep = ' +', header = None) 
+0

Возможно, вам захочется сохранить числовые строки так, как они есть, и не передавать их в ints, например 'pd.read_csv (путь, sep = '+', header = None, engine = 'python', converters = {1: str, 2: str}) ' –

Смежные вопросы