J'ai essayé de faire correspondre deux trames de données sur trois colonnes, à savoir "ticker", "year" et "quarter". Alors que le premier ensemble de données contient deux observations (deux rangées) pour chaque ticker, année, trimestre, le second ne contient qu'une seule ligne ... en particulier, la première image capture toujours deux haut-parleurs différents dans le même quart tandis que la seconde capture uniquement information. Maintenant, je veux faire correspondre la trame de données de telle sorte que chacune des deux rangées de la première trame de données dans le même trimestre ferme soit fusionnée avec la rangée pertinente dans la seconde trame de données.Joindre deux données dans lesquelles chaque ligne d'une même image correspond à deux lignes d'une autre trame
Mes données se présente comme suit: df
ticker year quarter exec_lname jobposition
XX 2009 3 A CEO
XX 2009 3 B CFO
XX 2009 4 A CEO
XX 2009 4 B CFO
YY 2007 1 C CEO
YY 2007 1 D CFO
YY 2007 2 C CEO
YY 2007 2 D CFO
ZZ 2008 3 F CEO
ZZ 2008 3 G CFO
dfnew
ticker year quarter eps calldate
XX 2009 3 x Mar
XX 2009 4 y Apr
YY 2007 1 z Feb
YY 2007 2 a Jan
ZZ 2008 3 b Dec
A la fin, il devrait ressembler à ceci:
ticker year quarter exec_lname jobposition eps calldate
XX 2009 3 A CEO x Mar
XX 2009 3 B CFO x Mar
XX 2009 4 A CEO y Apr
XX 2009 4 B CFO y Apr
YY 2007 1 C CEO z Feb
YY 2007 1 D CFO z Feb
YY 2007 2 C CEO a Jan
YY 2007 2 D CFO a Jan
ZZ 2008 3 F CEO b Dec
ZZ 2008 3 G CFO b Dec
J'ai essayé:
dfjoin = pd.merge(dfnew, df, how='left', left_on=['ticker', "year", "quarter"], right_on = ['ticker', "year", "quarter"])
mais il retourne le nouveau jeu de données avec toutes les lignes et colonnes appropriées, mais avec les colonnes eps et calldate complètement rempli de NaN. Est-ce que c'est parce que je veux fusionner chaque ligne deux fois à df? Le problème n'est pas la fusion sur plus d'une clé - le problème pourrait être que dans la première trame de données j'ai toujours deux lignes avec la même combinaison de ticker/year/quarter.
J'espère que quelqu'un peut m'aider! Merci! Julia
utiliser juste df1.merge (DF2, sur = ['ticker', 'year', 'quarter']) – Vaishali
Copie possible de [Fusionner deux tables basées sur plusieurs clés dans Python pandas] (https://stackoverflow.com/questions/32277473/merge-two-tables-based -on-multiple-keys-in-python-pandas) – Vaishali
Cela me laisse avec toutes les colonnes mais 0 lignes ... – Julia