У меня есть набор данных, в котором я добавляю координаты городов на основе почтовых индексов, но некоторые из этих почтовых индексов отсутствуют. Кроме того, в некоторых случаях отсутствуют города, штаты или и то, и другое. Например:
ca_df[['OWNER_CITY', 'OWNER_STATE', 'OWNER_ZIP']]
OWNER_CITY OWNER_STATE OWNER_ZIP
495 MIAMI SHORE PA
496 SEATTLE
Однако во втором наборе данных есть город, штат и соответствующие почтовые индексы. Это завершено без каких-либо пропущенных значений.
df_coord.head()
OWNER_ZIP CITY STATE
0 71937 Cove AR
1 72044 Edgemont AR
2 56171 Sherburn MN
Я хочу заполнить отсутствующие почтовые индексы в первом фрейме данных, если:
- Почтовый индекс пуст
- Город присутствует
- Статус присутствует
Это операция «все или ничего» означает, что либо все три критерия выполнены, и почтовый индекс заполнен, либо ничего не меняется.
Однако это довольно большой набор данных с> 50 миллионами записей, поэтому в идеале я хочу векторизовать операцию, работая по столбцам.
Технически это подойдет np.where но , насколько мне известно, np.where принимает только условия в следующем формате:
df1['OWNER_ZIP'] = np.where(df["cond"] ==X, df_coord['OWNER_ZIP'], "")
Как убедиться, что я заполняю только недостающие почтовые индексы, когда все условия соблюдены?