Проблема с объединением нескольких csv файлов
Короче говоря, суть в том, что у меня есть похожие в названиях cvs файлы. Их необходимо собрать в один. Например возьмём 2 файла первый: file_2019_11_01_n00131.csv
Отсчеты;Канал 0, В;
0;-0,195;
1;-0,107;
2;0,020;
3;0,205;
4;0,127;
5;0,000;
6;-0,234;
Второй file_2019_11_01_n00132.csv
Отсчеты;Канал 0, В;
0;0,215;
1;0,146;
2;-0,107;
3;-0,244;
4;-0,166;
5;0,049;
6;0,234;
Мой желаемы результат:
Отсчеты;Канал 0, В;Канал 0, В;
0;-0,195;0,215;
1;-0,107;0,146;
2;0,020;-0,107;
3;0,205;-,244;
4;0,127;-0,166;
5;0,000;0,049;
6;-0,234;0,234;
Результат, который получается в итоге:
Отсчеты;Канал 0, В;
0;-0,195;
1;-0,107;
2;0,020;
3;0,205;
4;0,127;
5;0,000;
6;-0,234;
Отсчеты;Канал 0, В;
0;0,215;
1;0,146;
2;-0,107;
3;-0,244;
4;-0,166;
5;0,049;
6;0,234;
Столбы не встают не рядом, а в конце первого столбца.
Вот моя функция:
file_name = fd.askopenfilename() # первый файл открыть
fout = open("out.csv", "a") # куда сохраняем
# первый файл:
for line in open(file_name):
fout.write(line)
# остальные:
for num in range(1, 5):
f = open("file_2019_11_01_n0013" + str(num) + ".csv")
# f.next() # skip the header
for line in f:
fout.write(line)
f.close()
fout.close()
Я догадываюсь, что нужно циклом добавлять по строчке, но не понимаю как это сделать. Подскажите пожалуйста, любая помощь будет очень ценна.
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Используйте силу джедаев Pandas:
import pandas as pd
from pathlib import Path
work_dir = Path(r"C:\temp\data")
sep = ";"
def join_csv_files(files, **read_csv_kwargs):
res = pd.concat([pd.read_csv(f, **read_csv_kwargs)
for f in files],
axis=1)
return res
res = join_csv_files(work_dir.glob("*.csv"), sep=sep, usecols=[0,1], index_col=0)
res.to_csv(r"c:\temp\result.csv", sep=sep)
результат:
Отсчеты;Канал 0, В;Канал 0, В
0;-0,195;0,215
1;-0,107;0,146
2;0,020;-0,107
3;0,205;-0,244
4;0,127;-0,166
5;0,000;0,049
6;-0,234;0,234