Итерация по файлам в каталоге и запись результатов в новые строки кадра данных с пандами - PullRequest
0 голосов
/ 10 июня 2019

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

import re
import os
import pandas as pd
files=[i for i in os.listdir("path") if i.endswith("txt")]
for file in files:
    f=open((file), 'r')
    data=f.read()
    a=re.findall(r'Company Name(.*?)Type',data,re.DOTALL)
    a1="".join(a).replace('\n',' ')
    b=re.findall(r'Sector(.*?)Sub Sector',data,re.DOTALL)
    b1="".join(b).replace('\n',' ')
    w={'Company Name': [a1], 'Sector': [b1]}
    df=pd.DataFrame(data=w)
    print (os.path.join(file))
df.to_excel(r'/Users/nameuser/info.xlsx') 

Я вижу, что он перебирает все файлы, но в этом случае вывод пуст.

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

1 Ответ

1 голос
/ 11 июня 2019
import re
import os
import pandas as pd

files=[i for i in os.listdir("path") if i.endswith("txt")]

w={'Company Name': [], 'Sector': []}

for file in files:

    f=open((file), 'r')
    data=f.read()
    a=re.findall(r'Company Name(.*?)Type',data,re.DOTALL)
    a1="".join(a).replace('\n',' ')
    b=re.findall(r'Sector(.*?)Sub Sector',data,re.DOTALL)
    b1="".join(b).replace('\n',' ')
    w['Company Name'].append(a1) 
    w['Sector'].append(b1)

    print (os.path.join(file))

df=pd.DataFrame(data=w)
df.to_excel(r'/Users/nameuser/info.xlsx')

Таким образом, вы бы заполнили все данные в формате dict, а затем преобразовали их в DataFrame.

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