У меня есть два кадра данных разных размеров.Мне нужно обновить msg_count в df1 с df2
, только если значение столбца [UserId, Month] из df1
и df2
соответствует
Мои данные выглядят следующим образом:
df1:
UserID Month A B C D E F msg_count
knaas 1/1/2017 0 0 0 0 0 0 0
knaas 2/1/2017 0 0 0 0 0 0 0
knaas 3/1/2017 0 0 0 0 0 0 0
knaas 4/1/2017 0 0 0 2 0 0 0
knaas 5/1/2017 0 0 0 0 0 0 0
knaas 6/1/2017 0 0 0 0 0 0 0
knaas 7/1/2017 0 0 0 0 0 0 0
knaas 8/1/2017 0 0 0 0 0 0 0
knaas 9/1/2017 0 0 0 0 0 0 0
knaas 10/1/2017 0 0 0 0 0 0 0
knaas 11/1/2017 0 0 0 0 0 0 0
knaas 12/1/2017 0 0 0 0 0 0 0
ArtCort0324 1/1/2017 0 0 0 0 0 0 0
ArtCort0324 2/1/2017 0 2 0 2 0 0 0
ArtCort0324 3/1/2017 0 0 0 0 0 0 0
ArtCort0324 4/1/2017 0 1 1 0 0 0 0
ArtCort0324 5/1/2017 0 0 0 3 0 0 0
ArtCort0324 6/1/2017 0 0 0 0 0 0 9
df2:
UserID Month msg_count
ArtCort0324 1/1/2017 0
ArtCort0324 2/1/2017 0
ArtCort0324 3/1/2017 0
ArtCort0324 4/1/2017 0
ArtCort0324 5/1/2017 0
ArtCort0324 6/1/2017 9
ArtCort0324 7/1/2017 0
ArtCort0324 8/1/2017 0
ArtCort0324 9/1/2017 0
ArtCort0324 10/1/2017 0
ArtCort0324 11/1/2017 0
ArtCort0324 12/1/2017 0
Я пробовал следующие фрагменты кода.Но это не сработало, как ожидалось
res = df2.set_index(['UserID', 'Month'])\
.combine_first(df1.set_index(['UserID', 'Month']))\
.reset_index()
updated_new = df1.merge(gitter, how='left', on=['UserID', 'Month'],
suffixes=('', '_new'))
updated_new['msg_count'] =
np.where(pd.notnull(updated_new['msg_count_new']),
updated_new['msg_count_new'], updated_new['msg_count'])
Мне нужен вывод, как показано ниже
UserID Month A B C D E F msg_count
knaas 1/1/2017 0 0 0 0 0 0 0
knaas 2/1/2017 0 0 0 0 0 0 0
knaas 3/1/2017 0 0 0 0 0 0 0
knaas 4/1/2017 0 0 0 2 0 0 0
knaas 5/1/2017 0 0 0 0 0 0 0
knaas 6/1/2017 0 0 0 0 0 0 0
knaas 7/1/2017 0 0 0 0 0 0 0
knaas 8/1/2017 0 0 0 0 0 0 0
knaas 9/1/2017 0 0 0 0 0 0 0
knaas 10/1/2017 0 0 0 0 0 0 0
knaas 11/1/2017 0 0 0 0 0 0 0
knaas 12/1/2017 0 0 0 0 0 0 0
ArtCort0324 1/1/2017 0 0 0 0 0 0 0
ArtCort0324 2/1/2017 1 0 0 0 0 0 0
ArtCort0324 3/1/2017 0 0 0 0 0 0 50
ArtCort0324 4/1/2017 0 0 0 0 0 0 0
Я добавил столбец по умолчанию msg_count
в df1
со значением по умолчанию 0.Мне нужно обновить msg_count
с df1
со значением msg_count
с df2
, только если UserId
и Month
равны в обоих фреймах данных