Pandas:将df2中存df1索引的id_nearest列替换为对应STATION NAME值
错误原因
你写的循环中每次都对df2["id_name"]整个列赋值,循环运行到最后一次时,_id取值为4,对应df1的JACK BARSTOW AIRPORT,导致所有行的id_name都被覆盖为这个值。
最优实现方案(向量化操作,效率最高)
直接用Pandas的map方法做映射匹配,无需循环:
# 构造df1索引到STATION NAME的映射关系 id_name_map = df1['STATION NAME'] # 匹配生成新列 df2['id_name'] = df2['id_nearest'].map(id_name_map)
循环写法修正(仅做参考,不推荐大数据量使用)
如果要保留循环写法,需要每次仅对当前行赋值,不要修改整列:
for index, row in df2.iterrows(): _id = row['id_nearest'] df2.loc[index, 'id_name'] = df1.loc[_id, 'STATION NAME']
内容的提问来源于stack exchange,提问作者TNT
相关产品推荐
相关产品推荐

