У меня есть два DataFrames, первый из которых является моим основным df, а второй - одним, я хочу «обновить» первое.Pandas слияние данных и переписывание столбца
По сути, у меня есть следующие:
In [205]: df1
Out[205]:
date total
0 04/10/2016 10
1 04/10/2016 20
2 04/10/2016 30
3 04/10/2016 40
4 04/10/2016 50
In [206]: df2
Out[206]:
date new
0 04/11/2016 1
1 04/11/2016 2
2 04/11/2016 3
Когда я сливаю, я получаю два столбца даты.
In [207]: pd.merge(df1, df2, left_index=True, right_index=True, how='outer')
Out[207]:
date_x total date_y new
0 04/10/2016 10 04/11/2016 1.0
1 04/10/2016 20 04/11/2016 2.0
2 04/10/2016 30 04/11/2016 3.0
3 04/10/2016 40 NaN NaN
4 04/10/2016 50 NaN NaN
Есть в любом случае, что я могу просто перезаписывает исходный date
столбец в df1
?
Прямо сейчас, я хотел бы сделать:
In [209]: df3['date_x'].update(df3['date_y'])
In [210]: df3
Out[210]:
date_x total date_y new
0 04/11/2016 10 04/11/2016 1.0
1 04/11/2016 20 04/11/2016 2.0
2 04/11/2016 30 04/11/2016 3.0
3 04/10/2016 40 NaN NaN
4 04/10/2016 50 NaN NaN
и попытаться уронить date_y
, но это не кажется очень эффективным.
Я также пробовал combine_first
, но в некоторых случаях это дает мне нежелательные результаты (т. Е. Если моя первоначальная дата пуста, и я совмещаю с ней новую).
Это не перезаписывать дату в 'df1', который является целью здесь – NightHallow
Если это так просто, как, что тогда' df1 [ 'date'] = df ['date'] 'должен делать, разве это не помогает? – Abbas
Извините, я попробовал 'pd.merge (df, df1, left_index = True, right_index = True, on = 'date', how = 'outer')', но делает 'pd.merge (df2, df1, left_index = True , right_index = True, on = 'date', how = 'external') 'работал для меня. Я не думал, что второй блок данных будет основным аргументом. – NightHallow