Scalanie kilku csv do jednego pliku

0

Cześć,

mam 12 plików csv z danymi miesięcznymi o takim samym formacie i chciałbym je scalić do jednego pliku. Mój kod wygląda następująco:

import os
import glob
import pandas as pd
os.chdir("ścieżka do folderu z plikami")

extension = 'csv'
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]

#combine all files in the list
combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames ])
#export to csv
combined_csv.to_csv("combined_csv.csv", index=False, encoding='utf-8-sig')

Po uruchomieniu otrzymuję błąd i nie bardzo wiem jak sobie z nim poradzić
screenshot-20191130183229.png

Załączam dwa przykładowe pliki.

2

Te pliki nie mają kodowania UTF-8, tylko Windows-1250.

0

A czy nie prościej będzie po prostu użyć narzędzi unixowych do tego? W sensie zamiast pythonem to użyć eg. cat by appendować jedną do drugiej?
Jeśli twoje csvki zawierają nagłówki kolumn, to:

#!/bin/bash
FILES=ścieżka/do/plików/*.csv
FIRST_FILE=1
for f in $FILES
do
  echo "Processing ${f}..."
  if [ $counter -lt 2 ]; then head -n 1 ${f} >> scalona.csv; FIRST_FILE=2; fi
  tail --lines=+2 ${f} >> scalona.csv
done

Jeśli twoje pliki nie zawierają nagłóków to po prostu:

#!/bin/bash
FILES=ścieżka/do/plików/*.csv
for f in $FILES
do
  echo "Processing ${f}..."
  cat ${f} >> scalona.csv
done
0

Jako, że te pliki nie mają nagłówków, to wystarczy:
Linux:

cat *.csv >merged_file.csv

Windows:

type  *.csv >merged_file.csv

1 użytkowników online, w tym zalogowanych: 0, gości: 1