В настоящее время я работаю над проблемой кластеризации, и у меня проблема с копированием значений из одного кадра данных в исходный кадр данных.
CustomerID | Date | Time| TotalSum | CohortMonth| CohortIndex
--------------------------------------------------------------------
0 |17850.0|2017-11-29||08:26:00|15.30|2017-11-01|1|
--------------------------------------------------------------------
1 |17850.0|2017-11-29||08:26:00|20.34|2017-11-01|1|
--------------------------------------------------------------------
2 |17850.0|2017-11-29||08:26:00|22.00|2017-11-01|1|
--------------------------------------------------------------------
3 |17850.0|2017-11-29||08:26:00|20.34|2017-11-01|1|
--------------------------------------------------------------------
И кадр данных со значениями (кластерами) для копирования:
CustomerID|Cluster
------------------
12346.0 | 1
------------------
12346.0 | 1
------------------
12346.0 | 1
------------------
Пожалуйста, помогите мне с проблемой: как скопировать значения из второго df, основанного на критериях идентификатора клиента, в первый кадр данных.
Я пробовал код, подобный этому:
df.merge(ic,left_on='CustomerID',right_on='Cluster',how='left').drop('CustomerID',1).fillna('')
Но это не работает, и я получаю сообщение об ошибке ...
Кроме того, он попробовал версию такого кода как:
df, ic = [d.reset_index(drop=True) for d in (df, ic)]
ic.join(df[['CustomerID']])
Но он получает ту же ошибку или ошибкукак 'Customer ID' не в df ... Извините, если это не ясно и неправильно отформатированный вопрос ... Это мой первый вопрос по stackoverflow.Спасибо всем.
ОБНОВЛЕНИЕ
Я пробовал это
df1=df.merge(ic,left_on='CustomerID',right_on='Cluster',how='left')
if ic['CustomerID'].values != df1['CustomerID_x'].values:
df1.Cluster=ic.Cluster
else:
df1.Cluster='NaN'
Но у меня другой кластер для одного и того же клиента.
CustomerID_x |Дата |Время |TotalSum |CohortMonth |CohortIndex |CustomerID_y |Кластер
0 | 17850.0 | 2017-11-29 || 08: 26: 00 | 15.30 |2017-11-01 |1 |NaN |1.0
1 | 17850.0 | 2017-11-29 || 08: 26: 00 | 20.34 |2017-11-01 |1 |NaN |0.0
2 | 17850.0 | 2017-11-29 || 08: 26: 00 | 22.00 |2017-11-01 |1 |NaN |1.0
3 | 17850.0 | 2017-11-29 || 08: 26: 00 | 20.34 |2017-11-01 |1 |NaN |2.0
4 | 17850.0 | 2017-11-29 || 08: 26: 00 | 20.34 |2017-11-01 |1 |NaN |1,0