2015-04-09 7 views
1

У меня есть две таблицы с различным количеством строк и столбцов.Сравните две таблицы и извлеките значения

Что я хотел бы сделать, это сравнить оба и извлечь значения A и B из a1.xlsx, которые соответствуют именам столбцов a2.xlsx и скопировать значения в столбцы C и D в a2.xlsx. Я знаю, как сделать это в Excel с помощью Index-Match, но не используя Pandon Pandas.

таблица 1 (a1.xlsx)

Index A B C 
0 s 0.2 new york 
1 d 1 vienna 
2 g 2 london 
3 c 3 tokyo 
4 r 2 paris 
5 d 1 berlin 
6 a 8 madrid 
7 f 10 seattle 

таблица 2 (a2.xlsx)

Index A B C D 
0 dublin 34 x x 
1 seoul 36 x x 
2 london 12 x x 
3 berlin 4 x x 
4 tokyo 6 x x 
5 seatte 22 x x 
+0

Какой у вас код до сих пор? – ballsatballsdotballs

ответ

1

Предполагая, что spreadsheet1 загружаются панды DF и таблица 2 загружаются в df1, то можно присвоить значения из результат: merge:

In [20]: 

df1[['C','D']] = df1.merge(df, left_on='A', right_on='C',how='left')[['A_y','B_y']] 
df1 
Out[20]: 
      A B C D 
Index      
0  dublin 34 NaN NaN 
1  seoul 36 NaN NaN 
2  london 12 g 2 
3  berlin 4 d 1 
4  tokyo 6 c 3 
5  seattle 22 f 10 

Просто объяснить немного, когда мы сливаемся мы выполняем левую слияние и это произведет столкновение столбцов, как мы есть имена столбцов, которые вступают в противоречие:

In [24]: 

df1.merge(df, left_on='A', right_on='C',how='left') 
Out[24]: 
     A_x B_x C_x D A_y B_y  C_y 
0 dublin 34 x x NaN NaN  NaN 
1 seoul 36 x x NaN NaN  NaN 
2 london 12 x x g 2 london 
3 berlin 4 x x d 1 berlin 
4 tokyo 6 x x c 3 tokyo 
5 seattle 22 x x f 10 seattle 

Мы заинтересованы в только колоннах A_y и B_y, мы выполняем левое слияние, потому что если бы мы использовали тип слияния по умолчанию, который является «внутренним», тогда это не будет согласовываться с исходным df, то есть значения будут смещены в начало df.

Смежные вопросы