Как объединить два кадра данных только для нескольких столбцов - PullRequest
0 голосов
/ 06 июня 2018

Любой способ объединить два кадра данных, но не объединить все столбцы?

У меня есть два кадра данных, я хочу объединить один столбец с другим.

Мои данные вот так

In [1]: left = pd.DataFrame({'key1':['a','b','c'], 'key2':['1','2','3'], 'v1':['january','january','january']}, index=[0,5,8]); left
Out[1]: 
   key1 key2         v1
0   a      1    january
5   b      2    january
8   c      3    january

In [2]: right = pd.DataFrame({'key1':['a','b','c'], 'key2':['1','2','3'], 'v1':['1<0xA4EB>','1<0xA4EB>','1<0xA4EB>'], 'new_value':[23,346,435]}); right
Out[2]: 
    key1    key2        v1    new_value
0   a       1     1<0xA4EB>         23
1   b       2     1<0xA4EB>        346
2   c       3     1<0xA4EB>        435

In [3]: pd.merge(left, right[['key1', 'key2', 'new_value']], on=['key1', 'key2'])
Out[3]:
    key1  key2       v1     new_value
0   a     1     january           23
1   b     2     january          346
2   c     3     january          435

Я выбираю ключевой столбец и новый столбец, затем объединяю их.

Но я думаю, что этот способ не является разумным.Я хочу найти более простой способ, если кто-нибудь знает об этом, пожалуйста, скажите мне.

Заранее спасибо.

1 Ответ

0 голосов
/ 06 июня 2018

В этом случае создается впечатление, что вы просто хотите добавить новый столбец в один из кадров данных.Если это так, почему бы вам просто не присоединить столбец, который вы хотели, к фрейму данных 1 и установить индекс фрейма даты 2 равным индексу фрейма данных 1, или создать копию фрейма данных 2 и переиндексировать его?Вот пример, где я просто прикрепляю столбец, который вы хотите в df2 к df1.(Обратите внимание, что я не полностью скопировал ваш код из df2, чтобы сэкономить время, но вы получите концепцию):

import pandas as pd
left = pd.DataFrame({'key1':['a','b','c'], 'key2':['1','2','3'], 'v1':['january','january', 'january']}, index=[0, 5, 8])
right = pd.DataFrame({'new_value': [23, 346, 435]})

copy = right.index = left.index
left['new_value'] = right['new_value']
print(left)

И вот ваш вывод:

     key1 key2       v1  new_value
 0    a    1  january         23
 5    b    2  january        346
 8    c    3  january        435

Я чувствовал, что вы могли бы хотеть это в качестве потенциального варианта, чтобы сохранить ваши индексы от df1.Ваше решение работает, но это просто способ сохранить ваши индексы в порядке для первого фрейма данных, если вам по какой-то причине они нужны в определенном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...