J'utilise Python pour fusionner deux dataframe:
Tableau 1: P> join = pd.merge (DF1, DF2, ON = ["A", "B"], comment "gauche") code> P>
A B Flag C
a 1 1 80
b 2 1 40
c 3 0 60
3 Réponses :
Le concept est similaire à ce que vous ferez sur SQL: séparer une table avec le critère de sélection (dans ce cas les maximums pour le drapeau), laissant suffisamment de colonnes pour correspondre à une observation sur la table des joints.
# raise preferred lines to the top df2 = df2.sort_values(by='Flag', ascending=False) # deduplicate df2 = df2.drop_duplicates(subset=['A','B'], keep='first') # merge pd.merge(df1, df2, on=['A','B']) A B Flag C 0 a 1 1 80 1 b 2 1 40 2 c 3 0 60
Essayez d'utiliser cette jointure:
Vous n'êtes pas clair. Vous dites pour cet exemple que "[Dans la jointure], je veux garder une [...] [...] des deux rangées dont la valeur du drapeau est = 1". Mais quelle est la règle générale, peu importe ce qui est dans les tables? Voulez-vous dire, si une table 2 AB SUBROUVE apparaît avec 0 et 1 que vous souhaitez déposer 0 rangée avant de rejoindre? Même s'il n'y a pas de match dans le tableau 1? Peut signaler que 0 ou 1? S'il vous plaît dans les questions de code donnez un exemple de reproductible minimal - Coupe et code de coller et de coller; Exemple d'entrée (comme code d'initialisation) avec la sortie souhaitée et réelle (y compris les messages d'erreur Verbatim); Tags et versions; Spécification claire et explication.