J'ai des données historiques sur un ticker dans une source de données et des données de dividendes historiques dans un autre Dataframe. Ils ressemblent à ceci:
Date High Low Open Close Volume Adj Close Dividend 0 1993-01-29 43.968750 43.750000 43.968750 43.937500 1003200.0 26.453930 1 1993-02-01 44.250000 43.968750 43.968750 44.250000 480500.0 26.642057 2 1993-02-02 44.375000 44.125000 44.218750 44.343750 201300.0 26.698507 3 1993-02-03 44.843750 44.375000 44.406250 44.812500 529400.0 26.980742 4 1993-02-04 45.093750 44.468750 44.968750 45.000000 531500.0 27.093624 ... ... ... ... ... ... ... ... 6809 2020-02-13 338.119995 335.559998 335.859985 337.059998 54501900.0 337.059998 1.570 6810 2020-02-14 337.730011 336.200012 337.510010 337.600006 64582200.0 337.600006 1.570 6811 2020-02-18 337.670013 335.209991 336.510010 336.730011 57226200.0 336.730011 1.570 6812 2020-02-19 339.079987 337.480011 337.790009 338.339996 48639100.0 338.339996 1.570 6813 2020-02-20 338.640015 333.681702 337.742004 336.894989 63193703.0 336.894989 1.570
4 Réponses :
Vous pouvez rejoindre, puis remplir les valeurs manquantes et enfin de renommer des colonnes.
Supprimer vos données de données sont nommés vous peut faire ceci: p> qui devrait faire. p> p> Market_prices code> et dividend_data p>
TypeError: "NOETYPEY" N'EST PAS iTABLE CODE> On Line 3 Dividend_Data ['"Value'], comment =" GAUCHE " code> J'ai essayé dividend_data [" date "] = pd.to_datetime (dividend_data ["date"]) code>
@jangles, désolé, vous devez spécifier quelle clé à utiliser sur le fichier de données d'origine avec l'option on = 'date' code>. Je vais mettre à jour ma réponse.
En supposant que df code> est la trame de données avec des données de ticker historiques et df2 code> est celui avec des informations de dividende.
Cela semble que cela devrait fonctionner, mais chaque ligne du nouveau dividende code> est nan pour moi. De plus, je ne suis pas sûr que cela correspondait et remplirait les dividendes correctement.
HM, il devrait pour associer des index - ce qui pourrait arriver ici est peut-être que le type diffère entre ces 2 - I.E. Une date est un DateTime code> et l'autre est la chaîne. Vous pouvez par exemple. Commencez par df ["date"] = pd.to_datetime (df ["date"]) code> (si df2 code> a DateTime code> index)
Les données de dividende sont venues à la date d'index. Je réinitialise l'index et apporté les dates dans leur propre couleur code> Colonne et essayé votre dividend_data ["date"] = pd.to_datetime (DF ["date"]) code> sur les deux dfs mais cela fait toujours la même chose. Ce doit être une erreur de type, que le pd.to_datetime code> ne semble pas corriger.
Nope, attendre - Pourriez-vous partager les résultats de df.index.dtype code> pour les deux cadres de données (une fois que les deux ont les deux date code> comme index)
Pour DF: AttributeError: "PlantIndex 'Object n'a aucun attribut' DTYPES ' code> pour DF2: attributError:" DateTimeIndex' objet n'a pas d'attribut 'DTYPES' code>
Mon mauvais - singulier - c'est df.index.dtype code>
Oh mon mauvais aussi, je dois mettre la date code> comme l'index, non comme une colonne. Mais c'est dtype ('int64') code> pour df et dtype ('
Ok- vous devez changer date code> de données historique de ticker - j'ai ajouté la ligne pour ceci ci-dessus
Toujours nan :(. df2 code> est censé avoir la colonne de date comme l'index, correct?
Eh bien, ils sont censés être du même type (en fait pour toutes les solutions, que ce soit rejoindre code>, fusionner code> ou ci-dessus). Vous pouvez donc les rendre dans DateTime-S ou Strings ( objet code>) pour vous assurer qu'ils sont tous deux du même type.
Je l'ai compris ici ici Stackoverflow.com/a/60329377/8142044 . Merci de votre aide!
interpolée de @ Réponse de FJSH.
# Join the data
prices_with_dividends = features.set_index('Date').join(dividend_data.set_index('Date'))
# Fill missing values with previous data
prices_with_dividends['Value'].fillna(method='ffill', inplace=True)
# Rename column
prices_with_dividends.rename({'Value': 'Dividend'}, axis=1, inplace=True)
price_table['Date'] = pd.to_datetime(price_table['Date'])
1) Vous devez toujours inclure vos données sous forme de texte, pas d'images. 2) Votre résultat attendu devrait être cohérent avec vos données d'échantillonnage.
@Quanghoang - Je l'ai eu! Fixé.
Regardez en utilisant
pd.dataframe.mmerge code>