Ответ 1
Строки, возвращаемые с iterrows
, являются копиями, которые больше не связаны с исходным фреймом данных, поэтому редактирование не меняет ваш фрейм. К счастью, поскольку каждый элемент, который вы возвращаете из iterrows
, содержит текущий индекс, вы можете использовать его для доступа и редактирования соответствующей строки фрейма данных:
for index, row in rche_df.iterrows():
if isinstance(row.wgs1984_latitude, float):
row = row.copy()
target = row.address_chi
dict_temp = geocoding(target)
rche_df.loc[index, 'wgs1984_latitude'] = dict_temp['lat']
rche_df.loc[index, 'wgs1984_longitude'] = dict_temp['long']
По моему опыту, этот подход кажется медленнее, чем использование подхода, такого как apply
или map
, но, как всегда, вам решать, как сделать производительность/легкость компиляции кода.