Re: [Python] Modificare i valori di una colonna di un file csv
Il 18/05/2017 08:19, Pietro Battiston ha scritto: Direi proprio di sì: aggiungo che a seconda della struttura del problema, un'alternativa (per me spesso più pratica) al comando join è creare gli indici giusti ed utilizzare semplicemente .loc. In generale, se si usa pandas (solo) per applicare del codice python riga per riga, si sta perdendo ogni beneficio (in termini di efficienza, ma anche di comodità) di pandas. Vero, è che essendo agli inizi sto ancora cercando di capire come utilizzarlo, per farlo al meglio immagino ci vorrà un po' di più. Grazie mille per il suggerimento su .loc. Paolo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Modificare i valori di una colonna di un file csv
Il 16/05/2017 19:19, Federico Cerchiari ha scritto: Ciao Paolo, non sono un esperto di Pandas, ma se i tuoi file non sono troppo grandi puoi farne a meno ed utilizzare il modulo csv: import csv # Leggi i due file with open('file1.csv', 'rb') as f1: with open('file2.csv', 'rb') as f2: # Dal secondo crei un dizionario di mapping mapping = {row[0]: row[1] for row in csv.reader(f2, delimiter=' ')} # Dal primo estrai le righe e sostituisci i valori, se non è presente il valore nel secondo file, hai come fallback il valore originale result = [mapping.get(row[0], row[0]) for row in csv.reader(f1, delimiter=' ')] # Salvi nel primo file quello che hai ottenuto with open('file1.csv', 'wb') as f1: csv.writer(f1).writerows(result) Ciao Federico, bella l'idea del mapping, non ci avevo pensato, e utilizzando un DictReader potrei indirizzare per header della colonna dato che nel csv reale dove c'e ne sono alcune decine la loro posizione non è garantita. Grazie per i suggerimenti! :) Paolo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Modificare i valori di una colonna di un file csv
Il 16/05/2017 18:56, Giovanni Porcari ha scritto: Il giorno 16 mag 2017, alle ore 18:50, Paolo Di Iesoha scritto: Dicevo che sono alle prime armi con Pandas e ho questo problema: in due dataframe ho il contenuto di due file CSV, entrambi con un header e qualche decina di colonne. Iterando sulle righe di entrambi voglio modificare il 1° file in modo tale che quando un valore della colonna "srvid" del 1° file coincide con il valore dell'omonima colonna "srvid" del 2° file, nella colonna "srvid" del 1° file metto il valore preso dalla colonna "srvname" del 2°. Mi pare che tu voglia fare una join basandoti sulle due colonne 'srvid'. Non è che puoi usare il comando join di pandas ? http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.join.html Ciao Giovanni, credo di si, appena ho un attimo di tempo gli do un'occhiata, intanto grazie per il suggerimento! :) Paolo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Modificare i valori di una colonna di un file csv
Il giorno mar, 16/05/2017 alle 18.56 +0200, Giovanni Porcari ha scritto: > > Il giorno 16 mag 2017, alle ore 18:50, Paolo Di Ieso> ibero.it> ha scritto: > > [...] > > voglio modificare il 1° file in modo tale che quando un > > valore della colonna "srvid" del 1° file coincide con il valore > > dell'omonima colonna "srvid" del 2° file, nella colonna "srvid" del > > 1° file metto il valore preso dalla colonna "srvname" del 2°. Un > > esempio: > > > Mi pare che tu voglia fare una join basandoti sulle due colonne > 'srvid'. > > Non è che puoi usare il comando join di pandas ? > http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFram > e.join.html > Direi proprio di sì: aggiungo che a seconda della struttura del problema, un'alternativa (per me spesso più pratica) al comando join è creare gli indici giusti ed utilizzare semplicemente .loc. In generale, se si usa pandas (solo) per applicare del codice python riga per riga, si sta perdendo ogni beneficio (in termini di efficienza, ma anche di comodità) di pandas. Ciao, Pietro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python