Non riesco a trovare una funzione panda (che avevo visto prima) per sostituire i NaN in un dataframe con valori di un altro dataframe (assumendo un indice comune che può essere specificato). Qualsiasi aiuto?I panda riempiono i valori mancanti nel dataframe da un altro dataframe
risposta
Se si dispone di due DataFrames della stessa forma, quindi:
df[df.isnull()] = d2
farà il trucco.
Solo luoghi in cui df.isnull()
restituisce True
(evidenziato in verde) potranno beneficiare di assegnazione.
In pratica, i DataFrames non hanno sempre le stesse dimensioni/forma e sono utili i metodi di trasformazione (in particolare .shift()
).
I dati in arrivo sono invariabilmente sporchi, incompleti o incoerenti. Par per il corso. C'è un panda piuttosto esteso tutorial and associated cookbook per affrontare queste situazioni.
Come ho appena appreso, c'è un metodo DataFrame.combine_first()
, che fa proprio questo, con l'ulteriore proprietà che se la cornice di dati di aggiornamento d2
è più grande rispetto all'originale df
, sono aggiunte le righe e le colonne aggiuntive, pure.
df = df.combine_first(d2)
DataFrame.combine_first() risponde esattamente a questa domanda.
Tuttavia, a volte si desidera riempire/sostituire/sovrascrivere alcuni dei valori non mancanti (non-NAN) di dataframe A con valori da dataframe B. Tale questione mi ha portato a questa pagina, e la soluzione è DataFrame.mask()
A = B.mask(condition, A)
Quando condition
è vero, verranno utilizzati i valori da A, altrimenti verranno utilizzati i valori di B.
Ad esempio, si potrebbe risolvere domanda originale del PO con mask
tale che quando un elemento da A non è NaN, usarlo, altrimenti utilizzare l'elemento corrispondente di B.
Ma usando DataFrame.mask() si potrebbe sostituire il valori di A che non soddisfano criteri arbitrari (meno di zero? più di 100?) con valori di B. Quindi mask
è più flessibile e eccessivo per questo problema, ma ho pensato che fosse degno di menzione (ne avevo bisogno per risolvere il mio problema).
È anche importante notare che B potrebbe essere una matrice numpy invece di un DataFrame. DataFrame.combine_first() richiede che B sia un DataFrame, ma DataFrame.mask() richiede solo che B sia un NDFame e che le sue dimensioni corrispondano alle dimensioni di A.
- 1. panda si uniscono dataframe riempire i valori mancanti
- 2. Come rimuovere un dataframe panda da un altro dataframe
- 3. XML per i panda dataframe
- 4. Aggiungere date mancanti a dataframe panda
- 5. Selezionare righe contenenti i valori da panda dataframe
- 6. Python panda il dataframe interpola dati mancanti
- 7. Panda Python: sostituire i valori più colonne corrispondenti a più colonne da un altro dataframe
- 8. Sbarazzarsi di valori Naz da panda dataframe
- 9. python panda che sostituiscono stringhe nel dataframe con i numeri
- 10. dataframe di DataFrames con i panda
- 11. Python Pandora Dataframe riempire i valori NaN
- 12. panda: normalizzare un DataFrame
- 13. Creare un DataFrame panda da più dicts
- 14. Somma tutti i valori in un dataframe
- 15. Plot grafico a barre da Panda dataframe
- 16. come ordinare i panda dataframe da una colonna
- 17. Serializzazione di un panda DataFrame
- 18. panda dataframe perno problema
- 19. restituisce Valori multipli panda applicare su un dataframe
- 20. ritorna logaritmiche a panda dataframe
- 21. Come estrarre i valori di tupla nel dataframe di panda per l'uso di matplotlib?
- 22. l'indicizzazione di un dataframe panda
- 23. Panda: campionamento di un DataFrame
- 24. Dataframe Unisci in Panda
- 25. intesa panda dataframe indicizzazione
- 26. Panda che selezionano colonne discontinue da un dataframe
- 27. Recupera indici di valori NaN in un dataframe panda
- 28. mediana di panda dataframe
- 29. Vectorised Haversine formula con un dataframe panda
- 30. Espansione efficiente di righe da panda DataFrame
Suoni Come si desidera unire. Si prega di mostrare alcuni esempi di scenari. –
trovato! Volevo utilizzare combine_first – user308827
http://pandas.pydata.org/pandas-docs/dev/generated/pandas.Series.combine_first.html – user308827