J'ai plusieurs trames de données avec des cours boursiers que je veux aligner dans une seule trame de données qui contient uniquement les prix de clôture pour toutes les actions.Fusionner plusieurs trames de données non alignées en une seule trame de données pandas
Je m'attendrais à ce que toutes les dates de toutes les trames de données soient présentes dans la colonne de date (index) et "NA" au cas où il n'y aurait pas de prix de clôture pour un stock à cette date.
Exemple avec deux données-cadres (DF1 et 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
Maintenant, je peux faire
In [8]: frame=pd.DataFrame({"df1.Close":df1["Close"], "df2.Close":df2["Close"]})
et le résultat est comme prévu:
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
Comment se J'ai besoin de changer mon code pour faire la même chose pour un nombre dynamique de trames de données? À l'heure actuelle, j'ai 8 trames de données dont j'ai besoin pour m'aligner de cette façon. Est-il possible de faire une boucle dans une liste de trames de données et de les aligner comme ci-dessus - au lieu de lier manuellement les noms des trames de données (quelque chose comme df [0] à df [7] au sens figuré)?
Merci d'avance et de gentilles salutations! Dirk
Très cool, merci beaucoup! Avec cet exemple, je suis à mi-chemin. Maintenant, comment pourrais-je rendre ce "dflist" dynamique? Je ne saurai pas à l'avance combien de trames de données je vais avoir besoin - donc je suppose que je cherche un moyen de créer dynamiquement un certain nombre de trames de données et ensuite utiliser votre code. Merci beaucoup pour votre aide! – user1653205
Utilisez simplement des méthodes standard de manipulation de liste comme 'append()'. Par exemple, lorsque vous obtenez une nouvelle trame de données, faites quelque chose comme 'dflist.append (new_df)'. – rmunn
Je pense que je me rapproche. J'ai maintenant chargé les données dans un dict où la clé est le ticker du stock et la valeur est l'image avec des citations OHLC pour le stock. Maintenant, j'ai une dict avec 8 paires clé/valeur. La question restante est: Comment joindre les dataframes en un en itérant à travers mon dict? – user1653205