Sto cercando di unire due dataframe che contengono la stessa colonna chiave. Alcune delle altre colonne hanno intestazioni identiche, anche se non un numero uguale di righe, e dopo la fusione queste colonne sono "duplicate" con le intestazioni originali dato un poscritto _x, _y, ecc.L'unione di due dataframe panda genera colonne "duplicate"
Qualcuno sa come ottenere panda per rilasciare le colonne duplicate nell'esempio qui sotto?
Questo è il mio codice Python:
import pandas as pd
holding_df = pd.read_csv('holding.csv')
invest_df = pd.read_csv('invest.csv')
merge_df = pd.merge(holding_df, invest_df, on='key', how='left').fillna(0)
merge_df.to_csv('merged.csv', index=False)
E i file CSV contengono questo:
prime file della sinistra-dataframe (holding_df)
key, dept_name, res_name, year, need, holding
DeptA_ResA_2015, DeptA, ResA, 2015, 1, 1
DeptA_ResA_2016, DeptA, ResA, 2016, 1, 1
DeptA_ResA_2017, DeptA, ResA, 2017, 1, 1
...
destro del dataframe (invest_df)
key, dept_name, res_name, year, no_of_inv, inv_cost_wo_ice
DeptA_ResA_2015, DeptA, ResA, 2015, 1, 1000000
DeptA_ResB_2015, DeptA, ResB, 2015, 2, 6000000
DeptB_ResB_2015, DeptB, ResB, 2015, 1, 6000000
...
risultato unito
key, dept_name_x, res_name_x, year_x, need, holding, dept_name_y, res_name_y, year_y, no_of_inv, inv_cost_wo_ice
DeptA_ResA_2015, DeptA, ResA, 2015, 1, 1, DeptA, ResA, 2015.0, 1.0, 1000000.0
DeptA_ResA_2016, DeptA, ResA, 2016, 1, 1, 0, 0, 0.0, 0.0, 0.0
DeptA_ResA_2017, DeptA, ResA, 2017, 1, 1, 0, 0, 0.0, 0.0, 0.0
DeptA_ResA_2018, DeptA, ResA, 2018, 1, 1, 0, 0, 0.0, 0.0, 0.0
DeptA_ResA_2019, DeptA, ResA, 2019, 1, 1, 0, 0, 0.0, 0.0, 0.0
...
aggiungerebbe più colonne per unire e continuare a fornire il risultato desiderato? 'merge_df = pd.merge (holding_df, invest_df, on = ['chiave', 'dept_name', 'res_name', 'year'], how = 'left'). fillna (0)' – EdChum
'_x' e' Le colonne _y' hanno origine dai fotogrammi sinistro e destro nell'unione. Dovrai specificare più colonne per indicare che sono uguali (i panda non lo sanno). –
È possibile passare un elenco di colonne a ['drop'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop.html#pandas.DataFrame.drop) ma rinominare sarà richiede il passaggio di un dict a ['rename'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.rename.html#pandas.DataFrame.rinomina) – EdChum