Как считывать данные из файлов .txt с неправильными пробелами (также используемыми в именах переменных)?

#python #pandas #dataframe

Вопрос:

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

 All items............................................   100.000        100.000     
                                                                                    
  Food and beverages..................................    14.794         16.246     
   Food...............................................    13.771         15.343     
                                                                              
    Food at home......................................     7.579          8.746     
     Cereals and bakery products......................      .984          1.124     
      Cereals and cereal products.....................      .301           .366     
       Flour and prepared flour mixes.................      .040           .051 
 

Я попробовал несколько вариантов, например , указав «t » в качестве ограничителей read_csv , и несколько необычных опций, скопированных из других вопросов и ответов, и ни один не работает. Либо данные удаляются, либо имена переменных интерпретируются как данные, и я получаю слишком много столбцов.

Как я должен прочитать этот файл в df в pandas?

Комментарии:

1. Если вы используете pandas, вы можете попробовать таблицу фиксированной ширины (pandas.read_fwf).

2. Это прекрасно работает. Большое спасибо!

Ответ №1:

Прочитайте ваше досье с pandas.read_fwf помощью . widths Аргумент соответствует ширине текста, который будет образовывать каждый столбец.

 import pandas as pd

df = pd.read_fwf("myfile.txt", widths=[54, 10, 15], header=None)
print(df)
 

что дает:

                                                    0        1        2
0  All items........................................  100.000  100.000
1                                                NaN      NaN      NaN
2  Food and beverages...............................   14.794   16.246
3  Food.............................................   13.771   15.343
4                                                NaN      NaN      NaN
5  Food at home.....................................    7.579    8.746
6  Cereals and bakery products......................    0.984    1.124
7   Cereals and cereal products.....................    0.301    0.366
8    Flour and prepared flour mixes.................    0.040    0.051