У меня есть 2 кадра данных pandas:
IpAddress_to_Country_data
lower_bound_ip_address upper_bound_ip_address country
1.677722e+07 16777471 Australia
1.677747e+07 16777727 China
1.677773e+07 16778239 China
1.677824e+07 16779263 Australia
1.677926e+07 16781311 China
и fraud_data :
ip_address
7.327584e+08
3.503114e+08
2.621474e+09
3.840542e+09
4.155831e+08
Мне нужно выполнить поиск, если ip_address находится между lower_bound и upper_bound, и заменить ip_address на страну. Я преобразовал dataframe в np.array:
a = np.array(fraud_data.ip_address)
b = np.array([IpAddress_to_Country_data.lower_bound_ip_address, IpAddress_to_Country_data.upper_bound_ip_address, IpAddress_to_Country_data.country])
и закодировал это, чтобы найти каждое значение, заменить его и сохранить в списке c:
for j in range(0, len(a)):
for i in range(0, b.shape[1]):
if b.transpose()[i][0] < a[j] < b.transpose()[i][1]:
c.append(b.transpose()[i][2])
Мое решение кажется хорошим, но это занимает много времени, потому что у меня 151112 строк. Я пытался сделать списки или лямбда-функции, но мне не удалось запустить хорошее решение.
У вас есть идея улучшить это решение?
Большое вам спасибо.