Лучший способ объединения файлов, индексация по заголовку столбца - PullRequest
0 голосов
/ 05 июля 2019

У меня есть 20 000 файлов в одной папке, ежедневно я хочу запустить некоторые критерии выбора, например if 'EXTRA' not in file: и if file.endswith(prev_date + '.csv') and file.startswith('IC'):, где prev_date = str('20190624').Где prev_date может быть изменено.

Моя проблема в том, что некоторые заголовки столбцов отличаются.Все содержат Index, Date.Это должны быть первые 2 столбца, затем обычно после этого мы видим `TICKER, UNITS.Однако это может измениться, в приведенном ниже коде вы можете увидеть 3 исключения, которые я кодировал, но потом я смотрю, и есть еще 20 разных имен файлов - некоторые одинаковые, но некоторые разные.

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

import os

prev_date = str('20190624')

csv_header = 'Index,Date,Ticker,Units'
csv_header_alt = 'Index,Date,Ticker,Units,CCY,PRICE,NOTIONAL'
csv_header_alt_op = 'Index,Date,Ticker,CURRENT_WEIGHT'

csv_out = 'R:/Sam/simulator/consolidated_positions' + prev_date + '.csv'

csv_dir = """R:/Sam/simulator/"""

dir_tree = csv_dir
for dirpath, dirnames, filenames in os.walk(dir_tree):
    pass

csv_list = []
for dirpath, dirnames, filenames in os.walk(csv_dir):
    for file in filenames:
        if 'EXTRA' not in file:
            if file.endswith(prev_date + '.csv') and file.startswith('IC'):
                csv_list.append(os.path.join(dirpath, file))

csv_merge = open(csv_out, 'w')
csv_merge.write(csv_header)
csv_merge.write('\n')

for file in csv_list:
    csv_in = open(file)
    for line in csv_in:
        if line.startswith(csv_header) or line.startswith(csv_header_alt) or line.startswith(csv_header_alt_op):
            continue
        csv_merge.write(line)
    csv_in.close()
csv_merge.close()

print('\n Verify consolidated CSV file : ' + csv_out)

Кроме того, извинения, я новичок в Python, но ANY Как вы думаете, я мог бы улучшить свой код для оптимальности, пожалуйста, укажите.

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