2017-08-30 2 views
0

je le tableau suivant avec moi:Remplacer une clé en double avec sa valeur précédente dans une trame de données de pandas géants

Key Col 
ABC Dup1 
ACA Dup1 
ACA Dup2 
ECB Dup3 
ACD Dup2 

Je veux attribuer la première valeur de ligne à ACA clé dans la ligne 3 comme Dup1 (row2) et modifier également la valeur pour ACD à Dup1 comme ABC = ACA = ACD Voici le résultat souhaité:

Key Col 
ABC Dup1 
ACA Dup1 
ACA Dup1 
ECB Dup3 
ACD Dup1 

J'ai essayé de mon mieux pour expliquer le problème, mais s'il vous plaît ne hésitez pas à poser d'autres questions.

+0

Pouvez-vous expliquer pourquoi 'ABC = ACA = ACD'? –

+0

Comme les lignes 1 et 2 ont la même valeur "Dup1" donc leur clé ABC = ACA ------ 1 et de manière similaire les lignes 3 et 5 ont la même valeur "Dup2" donc la clé ACA = ACD ---- ----- 2 De 1 et 2: ABC = ACA = ACD Et donc la même valeur pour toutes les 3 clés, c'est-à-dire Dup1 –

+0

Compris. Mise à jour ma réponse Si cela fonctionne, veuillez considérer le marquage accepté. Merci. –

Répondre

0

Vous aurez besoin de deux mappages pour mapper les doublons sur les clés et mapper les clés sur les doublons. Utilisez df.replace pour remplacer les valeurs.

m1 = dict(df.iloc[df.Col.drop_duplicates(keep='first').index].values[:, ::-1]) 
m2 = dict(df.iloc[df.Key.drop_duplicates(keep='first').index].values) 
df.Col = df.Col.replace(m1).replace(m2) 

df 
    Key Col 
0 ABC Dup1 
1 ACA Dup1 
2 ACA Dup1 
3 ECB Dup3 
4 ACD Dup1