<div dir="ltr">Ciao Paolo,<div>non sono un esperto di Pandas, ma se i tuoi file non sono troppo grandi puoi farne a meno ed utilizzare il modulo csv:</div><div><br></div><div><div>import csv</div><div># Leggi i due file</div><div>with open('file1.csv', 'rb') as f1:</div><div>    with open('file2.csv', 'rb') as f2:</div><div>        # Dal secondo crei un dizionario di mapping</div><div>        mapping = {row[0]: row[1] for row in csv.reader(f2, delimiter=' ')}</div><div>         # Dal primo estrai le righe e sostituisci i valori, se non è presente il valore nel secondo file, hai come fallback il valore originale</div><div>        result = [mapping.get(row[0], row[0]) for row in csv.reader(f1, delimiter=' ')]</div><div><br></div><div># Salvi nel primo file quello che hai ottenuto</div><div>with open('file1.csv', 'wb') as f1:</div><div>    csv.writer(f1).writerows(result)</div></div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">Il giorno 16 maggio 2017 18:50, Paolo Di Ieso <span dir="ltr"><<a href="mailto:paolodiieso@libero.it" target="_blank">paolodiieso@libero.it</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">La stanchezza, ero sicuro di aver creato ex-novo l'email. Riprovo come consigliato da Gollum! ;)<br>
<br>
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°. Un esempio:<br>
<br>
Situazione iniziale 1° file:<br>
<br>
srvid<br>
42<br>
63<br>
63<br>
63<br>
42<br>
42<br>
<br>
Situazione iniziale 2° file:<br>
<br>
srvid srvname<br>
42    HOTSPOT<br>
43    WiFi 6M<br>
44    WiFi 8M<br>
<br>
<br>
Situazione 1° file dopo le modifiche:<br>
<br>
srvid<br>
HOTSPOT<br>
63<br>
63<br>
63<br>
HOTSPOT<br>
HOTSPOT<br>
<br>
Tutti i valori 42 della colonna "srvid" del 1° file sono stati sostituiti dal valore "HOTSPOT" trovato in "srvname" del 2° file quando l'adiacente "srvid" ha anch'essa valore 42. Ho iniziato scrivendo<br>
<br>
df = pd.read_csv(rm_users_in, sep=";",<br>
                 usecols=rm_users_to_o4w_colum<wbr>n.keys(),<br>
                 dtype={"zip": object}  # fix value from 50015.0 to 50015<br>
                 )<br>
df2 = pd.read_csv(rm_services_in, sep=";",<br>
                  usecols=rm_services_to_o4w_col<wbr>umn.keys()<br>
                  )<br>
for row in df.itertuples():<br>
    for row2 in df2.itertuples():<br>
        if row.srvid == row2.srvid:<br>
            row["srvid"] = row2.srvname<br>
<br>
ma dal traceback capisco di non essere sulla strada giusta. Mi date una mano a tornare sulla retta via?<br>
<br>
Grazie mille.<br>
Paolo<br>
______________________________<wbr>_________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it" target="_blank">Python@lists.python.it</a><br>
<a href="http://lists.python.it/mailman/listinfo/python" rel="noreferrer" target="_blank">http://lists.python.it/mailman<wbr>/listinfo/python</a><br>
</blockquote></div><br></div>