присоединиться к столбцу, сравнив два других столбца в разных фреймах данных - PullRequest
0 голосов
/ 12 октября 2019

У меня есть два кадра с разными размерами:

df1:

    id  datetime
0   a1  1/1/2015

1   a1  2/1/2015

2   a1  3/1/2015

3   a2  1/1/2015

4   a2  2/1/2015

5   a3  2/1/2015

6   a3  3/1/2015

df2:

    id  datetime    total cost

0   a1  1/1/2015    3

1   a1  2/1/2015    4

2   a1  3/1/2015    2.5

3   a2  1/1/2015    5

4   a2  2/1/2015    4

5   a2  3/1/2015    3

6   a3  1/1/2015    7

7   a3  2/1/2015    8

8   a3  3/1/2015    4

Я хочу сравнить df1 с df2, чтобы я могобновите мой df1 значениями общей стоимости для соответствующего идентификатора и даты / времени. Поэтому я хочу, чтобы мой результат выглядел следующим образом: df1:

    id  datetime    totalcost

0   a1  1/1/2015    3

1   a1  2/1/2015    4

2   a1  3/1/2015    2.5

3   a2  1/1/2015    5

4   a2  2/1/2015    4

5   a3  2/1/2015    8

6   a3  3/1/2015    4

Я пытался использовать isin, но не смог сравнить столбец id и date time. Есть ли какой-нибудь элегантный способ сделать это, кроме цикла for и сравнения строк за строкой? Заранее спасибо

1 Ответ

2 голосов
/ 12 октября 2019

Вы можете сделать простую merge на 2 клавиши:

res = pd.merge(df1, df2, on=['id', 'datetime'])

print(res)

   id  datetime  total
0  a1  1/1/2015    3.0
1  a1  2/1/2015    4.0
2  a1  3/1/2015    2.5
3  a2  1/1/2015    5.0
4  a2  2/1/2015    4.0
5  a3  2/1/2015    8.0
6  a3  3/1/2015    4.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...