Добавление файлов CSV с именем файла в Python - PullRequest
0 голосов
/ 08 июня 2018

У меня есть каталог с несколькими CSV-файлами, содержащими историю цен FX:

hist_EUR_CHF.csv
hist_EUR_JPY.csv
hist_EUR_USD.csv
etc.....

Я объединяю все CSV-файлы в один файл со следующим сценарием:

import pandas as pd
import os
files = [f for f in os.listdir('.') if os.path.isfile(f)]
merged = []
for f in files:
    filename, ext = os.path.splitext(f)
    if ext == '.csv':
        read = pd.read_csv(f)
        merged.append(read)
result = pd.concat(merged)
result.to_csv('_FX_historical.csv')

ОбъединенныйCSV-файл теперь содержит дату, открытие, максимум, минимум, закрытие:

Date          Open        High        Low         Close
2018-01-06   1.2032      1.2106      1.1988      1.2033 
2018-01-07   1.2041      1.2067      1.2031      1.2044 
2018-01-06   93.9023     94.0105     93.8832     93.9024 
2018-01-07   93.9671     93.9934     93.9104     93.9672 

Я хочу добавить два столбца, которые идентифицируют пару FX, которую представляют данные.

Как добавить файл для добавления двух столбцов: Из столбца и В столбца?

Мой новый файл будет читать:

Date          Open        High        Low         Close    From    To
2018-01-06   1.2032      1.2106      1.1988      1.2033     EUR   USD
2018-01-07   1.2041      1.2067      1.2031      1.2044     EUR   USD
2018-01-06   93.9023     94.0105     93.8832     93.9024    EUR   JPY
2018-01-07   93.9671     93.9934     93.9104     93.9672    EUR   JPY

1 Ответ

0 голосов
/ 08 июня 2018

Вы можете сделать то же самое для вашего второго столбца

   fromP = ['EUR2','EUR2','EUR2','EUR2']
   with open('_FX_historical.csv','r') as csvinput:
    with open('a2.csv', 'w') as csvoutput:
        writer = csv.writer(csvoutput, lineterminator='\n')
        reader = csv.reader(csvinput)

        all = []
        row = next(reader)
        row.append('From')
        all.append(row)
        i=0
        for row in reader:
            row.append(fromP[i])
            all.append(row)
            i=i+1
    writer.writerows(all)
...