J'ai cherché une solution à ce problème et toutes les réponses ne semblent pas fonctionner alors j'ai décidé de demander de l'aide sur ce cas d'utilisation spécifique. Je fusionne deux csv qui ont des dimensions différentes mais partagent deux colonnes égales. J'ai d'abord placé les années csv dans une trame de données de pandas géants qui ressemblent à ceci:Pandas supprimant des lignes dupliquées lors de la fusion de deux CSV avec des dimensions différentes
df_td et df_ld:
>>> df_td.head(2)
trans_id store_num cust_id bus_date type
0 0000001 104 111111 10/5/2017 12:00:00 AM Payment
1 0000002 104 111111 10/5/2017 12:00:00 AM Payment
2 0000003 104 111111 10/5/2017 12:00:00 AM Received
>>> df_ld.head(2)
cust_id nxt_date store_num amt_received type_rec
0 111111 11/5/2017 104 10.00 NaN
1 111112 11/6/2017 104 10.00 NaN
Après l'exécution de ce code:
merged = pd.merge(df_td, df_ld, how='inner', on=['cust_id','store_num']).fillna(0)
Je cette fusion dataframe:
>>> df_td_ld.head(3)
trans_id store_num cust_id bus_date type nxt_date amt_received type_rec
0 0000001 104 111111 10/5/2017 12:00:00 AM Payment 11/5/2017 10.00 NaN
1 0000002 104 111111 10/5/2017 12:00:00 AM Payment 11/5/2017 10.00 NaN
2 0000003 104 111111 10/5/2017 12:00:00 AM Received 11/5/2017 10.00 NaN
Comme vous pouvez le voir, je reçois des dups dans les colonnes df_ld puisque le cust_id 111111 apparaît seulement une fois dans t hat dataframe. Si j'essaie d'interroger et de sommer cette colonne, elle indiquera 30,00 au lieu des 10,00 corrects à cette date, pour ce client, dans ce magasin. Je ai essayé outer
, left
, right
ainsi que concat
et join
fonctions, mais soit obtenir la même sortie ou quelque chose de complètement faux.
Ce que je voudrais est ceci:
trans_id store_num cust_id bus_date type nxt_date amt_received type_rec
0 0000001 104 111111 10/5/2017 12:00:00 AM Payment 11/5/2017 0 NaN
1 0000002 104 111111 10/5/2017 12:00:00 AM Payment 11/5/2017 0 NaN
2 0000003 104 111111 10/5/2017 12:00:00 AM Received 11/5/2017 10.00 NaN
Est-il possible avec merg/join/concat que cela est possible? Merci!
Cela pourrait aider: Merci Nathan http://pandas.pydata.org/pandas-docs/version/0.17.1/generated/pandas.DataFrame.drop_duplicates.html –