Ho più frame di dati con i prezzi delle azioni che voglio allineare in un singolo frame di dati che contiene solo i prezzi di chiusura per tutti gli stock.Unione di più frame di dati non allineati in frame di dati singoli panda
Mi aspetterei che tutte le date da tutti i frame di dati siano presenti nella colonna della data (indice) e "NA" nel caso in cui non vi fosse alcun prezzo di chiusura per uno stock in quella data.
Esempio con due telegrammi di dati (DF1 e DF2):
In [5]: df1
Out[5]:
Open High Low Close
Date1
2012-01-05 22.00 22.66 23.11 24.04
2012-01-04 24.04 23.80 23.08 22.16
2012-01-03 22.16 21.27 20.42 21.24
2012-01-01 21.24 22.30 22.52 22.30
In [7]: df2
Out[7]:
Open High Low Close
Date1
2012-01-07 23.00 21.66 25.11 21.04
2012-01-06 22.00 22.66 23.11 24.04
2012-01-04 24.04 23.80 23.08 22.16
2012-01-02 22.16 21.27 20.42 21.24
2012-01-01 21.24 22.30 22.52 22.30
Ora posso fare
In [8]: frame=pd.DataFrame({"df1.Close":df1["Close"], "df2.Close":df2["Close"]})
e il risultato è come previsto:
In [9]: frame
Out[9]:
df1.Close df2.Close
Date1
2012-01-01 22.30 22.30
2012-01-02 NaN 21.24
2012-01-03 21.24 NaN
2012-01-04 22.16 22.16
2012-01-05 24.04 NaN
2012-01-06 NaN 24.04
2012-01-07 NaN 21.04
Come sarebbe Devo cambiare il mio codice per fare lo stesso per un numero dinamico di frame di dati? In questo momento, ho 8 frame di dati che ho bisogno di allineare in questo modo. C'è un modo per eseguire il ciclo attraverso un elenco di frame di dati e allinearli come sopra - invece di legare manualmente i nomi dei frame di dati (qualcosa come df [0] a df [7] in senso figurato)?
Grazie in anticipo e cordiali saluti! Dirk
Molto bello, grazie mille! Con quell'esempio, sono a metà strada lì. Ora, come faccio a rendere questa dinamica "dflista"? Non saprò in anticipo quanti fotogrammi di cui ho bisogno, quindi suppongo di cercare un modo per creare dinamicamente un certo numero di frame di dati e quindi utilizzare il codice. Grazie mille per il vostro aiuto! – user1653205
Usa semplicemente i metodi di manipolazione delle liste standard come 'append()' - così, ad esempio, quando ottieni un nuovo frame di dati, fai qualcosa come 'dflist.append (new_df)'. – rmunn
Penso che mi sto avvicinando. Ora ho caricato i dataframes in un dict in cui la chiave è il ticker del titolo e il valore è il dataframe con le quotazioni OHLC per lo stock. Ora ho un dict con 8 coppie chiave/valore. La domanda rimanente è: Come faccio a unire i dataframes in uno iterando attraverso il mio dict? – user1653205