-1
votes

Pandas a laissé rejoindre le retour de plusieurs rangées

J'utilise Python pour fusionner deux dataframe:

join = pd.merge (DF1, DF2, ON = ["A", "B"], comment "gauche") code> P>

Tableau 1: P>

          A   B  Flag  C
           a   1   1   80
           b   2   1   40
           c   3   0   60


1 commentaires

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.


3 Réponses :


0
votes

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. xxx


0 commentaires

2
votes
# 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

0 commentaires

0
votes

Essayez d'utiliser cette jointure: xxx


0 commentaires