2015-12-18 1 views
0

Lors de la fusion et l'utilisation de la MWF suivante:pandas dataframes se confondent avec les noms mêmes colonnes, donnent la priorité à un

import pandas as pd 
df1 = pd.DataFrame(data={'A': [1, 1], 'B': [2, 22]}) 
df2 = pd.DataFrame(data={'A': [1, 1], 'D': [4, 44]}) 
df3 = pd.DataFrame(data={'A': [1, 1], 'F': [6, 66]}) 
df = pd.concat([df1, df2, df3], axis=1, join='inner') 

sortie est:

A B A D A F 
0 1 2 1 4 1 6 
1 1 22 1 44 1 66 

Toute idée comment il pourrait être converti avec un chat ou fusionner ou une autre fonction (sans avoir à "supprimer" manuellement les colonnes communes avant ou après la fusion, et fusionner doit toujours être interne) dans la sortie suivante (en supposant que "priorité" est donnée à df1['A'])?

A B D F 
0 1 2 4 6 
1 1 22 44 66 

Répondre

1

Vous pouvez transposer votre structure de données, supprimer des doublons et la transformer à nouveau.

>>> df.T.drop_duplicates().T 
    A B D F 
0 1 2 4 6 
1 1 22 44 66 
+0

Merci. Cela va faire, étant donné que les valeurs sont les mêmes. Si les valeurs sont différentes j'ai fait quelque chose comme suit pour l'exemple ci-dessus (fonctionne aussi avec les mêmes valeurs): 'drops = [c pour c dans df2.columns si c dans df1.columns]; df2.drop (drop, axis = 1, inplace = True); drops = [c pour c dans df3.columns si c dans df1.columns]; df3.drop (drop, axis = 1, inplace = True) ' –