J'ai deux data-frames pandas que je voulais fusionner. Les trames de données ont différentes colonnes et des indices qui se chevauchent. Je veux les fusionner, en gardant l'ordre des indices intact.Fusion de DataFrame avec des index ordonnés et des colonnes différentes
dataframe (d1)
Dec 16 Dec 15
Balance Sheet
NON-CURRENT LIABILITIES NaN NaN <-- 'all Nan' row
Other Long Term Liabilities 8.37 9.30
Long Term Provisions 13.53 12.74 <-- Not present in d2
Total Non-Current Liabilities 21.90 22.04
CURRENT LIABILITIES NaN NaN <-- 'all Nan' row
Trade Payables 32.49 24.26
dataframe (d2)
Dec 11 Dec 10
Balance Sheet
NON-CURRENT LIABILITIES NaN NaN
Deferred Tax Liabilities [Net] 0.00 7.40 <-- Not present in d1
Other Long Term Liabilities 14.13 0.00
Total Non-Current Liabilities 14.13 7.40
CURRENT LIABILITIES NaN NaN
Trade Payables 77.35 60.40
J'ai essayé les façons de fusionner ces données-cadres, mais aucun d'entre eux travaillaient.
d1.merge(d2, how='left', left_index=True,right_index=True)
d1.merge(d2, how='outer', left_index=True,right_index=True)
pd.merge_ordered(d1,d2,left_on=['Dec 16'],right_on=['Dec 11'])
pd.concat([d1.merge(d2, how='left', left_index=True,right_index=True),d1.merge(d2, how='right', left_index=True,right_index=True)]).drop_duplicates(subset='Dec 16',keep='last')
J'attends le dataframe résultant pour ressembler à ce
Dec 16 Dec 15 Dec 11 Dec 10
Balance Sheet
NON-CURRENT LIABILITIES NaN NaN NaN NaN
Deferred Tax Liabilities [Net] NaN NaN 0.00 7.40 <-- from d2
Other Long Term Liabilities 8.37 9.30 14.13 0.00 <-- d1+d2 merged
Long Term Provisions 13.53 12.74 NaN NaN <-- from d1
Total Non-Current Liabilities 21.90 22.04 14.13 7.40 <-- d1+d2 merged
CURRENT LIABILITIES NaN NaN NaN NaN
Trade Payables 32.49 24.26 77.35 60.40
Notez que les questions générales d'ordre (par exemple, toutes les lignes NaN doivent être en ordre), mais pas l'ordre des indices fusionnés entre les lignes «toutes NaN». Aussi les colonnes de d1 devraient venir avant les colonnes d2.
Than ks pour la réponse, mais dans les deux cas, les indices sont triés. L'exigence est qu'au moins les lignes «toutes les NaN» doivent rester dans l'ordre. –
Mis à jour avec reindex, ça aide? – Zero
Merci, oui cela aide définitivement. Est-il possible de préparer dynamiquement order_index par union de d1.index et d2.index, puisque ces noms peuvent être différents et non connus auparavant. Merci beaucoup pour toute l'aide. –