2017-01-04 3 views
1

Моей целиОбъединение двух кадров данных, сохраняя при этом определенной строке

Я хотел бы объединить два кадра данных, сохраняя при этом строки, row_to_keep

Рамки данных

>>> df 

       ColumnA    Stats 
0    Cake    872 
1    Cheese Cake   912 
2    Egg     62 
3    Raspberry Jam  091 
4    Bacon    123 
5    Bread    425 
row_to_keep  NaN     999 

>>> df1 

       ColumnB 
0    Cake 
1    Cheese Cake  
3    Raspberry Jam 
4    Bacon 

Моя попытка

new_df = df.merge(df1, left_on="ColumnA", right_on="ColumnB") 

>>> new_df 

       ColumnA   Stats ColumnB 
0    Cake   872  Cake 
1    Cheese Cake  912  Cheese Cake 
3    Raspberry Jam 091  Raspberry Jam 
4    Bacon   123  Bacon 

Ожидаемый результат

Слияние работает, как ожидалось, но я изо всех сил, чтобы найти эффективный способ сохранить последнюю строку df.

   ColumnA   Stats 
0    Cake   872 
1    Cheese Cake  912 
3    Raspberry Jam 091 
4    Bacon   123 
row_to_keep  NaN    999 

Кроме того, будет ли способ таким образом, что получает этот выход, с помощью 'row_to_keep' вместо row[number]?

+1

... как о выполнении соединения слева от ' df' в 'df1' методом' merge'? –

+0

Или Вы можете добавить строку позже в 'new_df'. –

ответ

1

UPDATE:

In [139]: df[df.ColumnA.isin(df1.ColumnB)].append(df.loc['row_to_keep']) 
Out[139]: 
        ColumnA Stats 
0      Cake 872 
1    Cheese Cake 912 
3   Raspberry Jam  91 
4     Bacon 123 
row_to_keep   NaN 999 

Старый ответ:

Вот одно решение:

In [126]: df.merge(df1, left_on="ColumnA", right_on="ColumnB").append(df.loc['row_to_keep']) 
Out[126]: 
        ColumnA Stats  ColumnB 
0      Cake 872   Cake 
1    Cheese Cake 912 Cheese Cake 
2   Raspberry Jam  91 Raspberry Jam 
3     Bacon 123   Bacon 
row_to_keep   NaN 999   NaN 

Объяснение:

df.loc['row_to_keep'] Селе каратов один ряд по значению индекса ('row_to_keep') и DF.append(row) - присоединяет его к объединенному DF

Я должен признать, хотя, может быть менее уродливыми решениями ...

+0

Этого достаточно для меня! Спасибо :) Могу ли я быстро попросить объяснения/разъяснения по поводу '.loc' в отношении моего вопроса? – LearningToPython

+1

@ BenF97, я добавил очень короткое объяснение ответа. Вы также можете прочитать [о различных вариантах выбора для индексирования] (http://pandas.pydata.org/pandas-docs/stable/indexing.html#different-choices-for-indexing) – MaxU

+0

Sweet ;-) Большое спасибо! – LearningToPython

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