Je souhaite avoir une trame de données df2 qui contiendra les valeurs de df1. Les deux trames de données ont un index de date. Les deux blocs de données contiennent les mêmes colonnes. Je veux juste mettre à jour les colonnes de df2 si l'index de df2 existe dans df1.Mettre à jour les colonnes dans df2 basé sur df1 sur l'index de date
DF1
Symbol K1 K2 K3
Date
2011-01-10 0.0 0.0 0.0
2011-01-13 -1500.0 0.0 4000.0
2011-01-26 0.0 1000.0 0.0
DF2
K1 K2 K3
2011-01-10 0.0 0.0 0.0
2011-01-11 0.0 0.0 0.0
2011-01-26 0.0 0.0 0.0
sortie désiré
K1 K2 K3
2011-01-10 0.0 0.0 0.0
2011-01-11 0.0 0.0 0.0
2011-01-26 0.0 1000.0 0.0
J'ai essayé;
df2 = df2.join(df1, on=df1.index, how='left')
Mais a reçu cette erreur;
raise KeyError('%s not in index' % objarr[mask]) KeyError: "Index([u'2011-01-10', u'2011-01-13', u'2011-01-26', u'2011-02-02',\n
Toute aide est plus que bienvenue.
Merci
Merci pour la réponse rapide. Cependant, cela ne fonctionne pas. Tout ce qui est imprimé est 0. comme le df2 original. –
@Codinghierarchy Quoi! Pouvez-vous ajouter d'autres données qui reproduisent votre problème réel? Comme vous pouvez le voir, cela fonctionne pour ce mini-jeu de données. Veuillez vérifier vos noms de variables et tout le reste. –
Je l'ai ajouté comme: df2 = df1.loc [df1.index.intersection (df2.index)]. Combine_first (df2) –