Re: [Python] Modificare i valori di una colonna di un file csv

2017-05-18 Per discussione Paolo Di Ieso

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

2017-05-18 Per discussione Paolo Di Ieso

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

2017-05-18 Per discussione Paolo Di Ieso

Il 16/05/2017 18:56, Giovanni Porcari ha scritto:

Il giorno 16 mag 2017, alle ore 18:50, Paolo Di Ieso  ha 
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

2017-05-18 Per discussione Pietro Battiston
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