2017-02-06 6 views
0

У меня есть дата-карта в год с 2009 по 2016 год. Каждый блок данных имеет два столбца C_ID и столбец года, обозначенный соответственно. Я хочу объединить все файлы данных.Внешнее объединение нескольких баз данных pandas в python

Так, например

df_2009:

C_ID 2009 
A  456 
B  754 
C  332 

df_2010:

C_ID 2010 
A  3454 
C  54 
E  234 

Я нашел этот подход на другие должности на StackOverflow:

dfs = [df_2009, df_2010, df_2011, df_2012, df_2013, df_2014, df_2015, df_2016 ] 
from functools import partial 
merge = partial(pd.merge, on=['C_ID']) 

result = dfs[0] 
for df in dfs[1:]: 
    result = merge(result, df) 

Но, к сожалению это я s внутреннее соединение, и он избавляется от всех C_ID, которые не входят во все наборы данных. Мне нужно сделать внешнее соединение.

+0

вы проверили документацию 'pd.merge'? Для этого есть аргумент ключевого слова 'how'. – cel

+0

Это сработало - большое спасибо – jeangelj

ответ

0

спасибо @cel, я добавил, насколько = 'внешнее', и она работала

dfs = [df_2009, df_2010, df_2011, df_2012, df_2013, df_2014, df_2015, df_2016 ] 
from functools import partial 
merge = partial(pd.merge, on=['C_ID'], how ='outer') 

result = dfs[0] 
for df in dfs[1:]: 
    result = merge(result, df) 
Смежные вопросы