У меня есть контактные данные ниже.
mobile email contact_code index_clone contact_day
0 0972135314 abc@gmail.com 1 0 9/26/2018
1 0972135314 cde@gmail.com 2 1 9/26/2018
2 0943360092 cmt@gmail.com 3 2 9/25/2018
3 0988870766 def@gmail.com 4 3 9/24/2018
4 0972135314 cmt@gmail.com 5 4 9/27/2018
Мне нужно создать новый столбец с именем "пользователь".Пользовательский столбец получает данные из кода контакта, если контакты имеют один и тот же мобильный телефон или один и тот же адрес электронной почты, они являются одним и тем же пользователем, и значение пользователя для этих контактов является наименьшим contact_code.
Например: строка 4: номер мобильного телефона - 0972135314, поэтому он соответствует строке 0 и 1, адрес электронной почты - cmt@gmail.com, поэтому он соответствует строке 2. Код контакта для всех 3 соответствующих строк равен {1,2,3}, поэтому пользовательский столбец строки 4 равен 1, наименьшее значение.
Проблема в том, что мне нужно циклически проходить по каждой строке, чтобы найти совпадающие строки, получить список contact_code и назначить наименьшее значение для пользовательского столбца,Так что Панды бегут медленно.Как я могу сделать процесс быстрее?Вот мой код.
for idx in data.index:
data.set_value(idx,"user",min(data.loc[(data["index_clone"] <= idx) & ((data["mobile"] == data.get_value(idx,"mobile")) | (data["email"] == data.get_value(idx,"email"))),"contact_code"]))
* Обновление: спасибо wm и jpp за ваши ответы.Но у меня есть другая проблема.В каждой строке есть столбец contact_day, это день контакта.Например, есть 3 контакта строки пользователя 1 (строки 0, 1 и 4).Contact_day для строки 0 и день контакта для строки 1 - 26.09.2008, а для contact_day для строки 4 - 27.09.2008.Таким образом, в столбце «поворот» строки 0 и 1 - 1, а в строке «поворот» 4 - 2. Как получить поворот контакта пользователя, не просматривая все строки?