Closed pigreco closed 3 years ago
Io lo farei in R (che sto provando ad imparare da un po') con uno dei seguenti metodi:
o in python:
Ciao @pigreco per queste cose uso Miller:
mlr --csv put -S '$file=FILENAME' *.csv >output.csv
Verrà aggiunto il campo file, con il nome del file.
grazie @dennisangemi se guardi le ricette di t'ansignari vedrai che usiamo quasi sempre la riga di comando e utility come Miller, visidata, ecc... usare R per fondere dei file è come sparare a una mosca con il bazooka. Python invece sarebbe una bella soluzione da adottare, ma occorre studiare oppure scrivere, come fa @aborruso , l'intero script.
grazie
usare R per fondere dei file è come sparare a una mosca con il bazooka.
Se ce l'hai installato e lo usi, fare un merge con R
è una cosa comoda e leggera. Insomma dipende sempre dalla propria cassetta degli attrezzi.
Ma è vero che uno strumento da cli per cose come queste è spesso imbattibile in immediatezza e nell'essere by default in un certo senso per tutte/i.
@aborruso @dennisangemi io uso quotidianamente QGIS e potrei farlo con questo software, ma ormai la mia mente pensa subito alla cli e non più alla gui.
Io lo farei così con Python e pandas:
import os
import pandas as pd
# Lista vuota che conterrà i files
files = []
# Il path dove si trovano i files csv, in questo caso nella stessa cartella
path = '.'
# Il nome del file aggregato
output = 'joined'
# Per ogni file contenuto nella cartella stabilita
for file in os.listdir(path):
# Se è un csv e non si tratta del file unico
if (file.endswith('.csv')) and (not file.startswith(output)):
# Aggiungi alla lista dei files
files.append(file)
# Per ogni file contenuto nella lista
for file in files:
# Leggi il csv in un dataframe
df = pd.read_csv(file)
# Aggiungi colonna con nome file
df['nome_file'] = file
# Appendi al file aggregato
df.to_csv(output+'.csv', mode = 'a', index = None, header = False)
L'ultimo comando df.to_csv è personalizzabile se si vuole l'index e l'header. Altre opzioni sono consultabili qui.
Io lo farei così con Python
Lui è veramente addicted ;)
@aborruso , appena testata la tua soluzione, è una bomba, semplice e veloce.
Poi proverò le altre soluzioni.
ricetta pubblicata, chiudo issue grazie a tutti
https://tansignari.opendatasicilia.it/ricette/csv-tsv/fondere_csv_nome_file/
Ho molti file CSV con nome
xxxxxx_yyyy.csv
dove:xxxxxx
è il nome di un comune;yyyy
è il codice Belfiore del comune.come generare unico file CSV (hanno tutti la stessa struttura) e aggiungere un campo
nome_file
di provenienza?