Python Pandas Merge находит только одно совпадение - PullRequest
0 голосов
/ 26 апреля 2018

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

all_dat = pd.merge(activity,fees,on=[id,year_month])

Когда я пытаюсь присоединиться к ним по идентификатору и времени (datetime64), результат имеет только первое совпадение для каждого пользователя с датой 2017-1-1. Несмотря на то, что я четко могу найти много одинаковых значений времени в обоих фреймах данных, слитый дает мне только строки с 2017-1-1.

> print(set(all_dat[year_month]))
{Timestamp('2017-01-01 00:00:00')}

Структура сборов выглядит примерно так:

USER_ID   Name   Time       Fees
123       John   2016-12-01 300
123       John   2017-01-01 500
123       John   2017-02-01 400

А вид деятельности один выглядит так:

USER_ID   Name   Time       Activity
123       John   2017-01-01 20
123       John   2017-01-02 30

Я бы хотел получить что-то подобное в результате слияния:

USER_ID   Name   Time       Activity Fees
123       John   2017-01-01 20       500 
123       John   2017-01-02 30       400

Но я получаю только первый матч:

USER_ID   Name   Time       Activity Fees
123       John   2017-01-01 20       500 

Не думаю, что это проблема dtype, что могло пойти не так?

1 Ответ

0 голосов
/ 26 апреля 2018

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

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