如何使用folium.PolyLine读取pandas数据框坐标绘制连线
解决方案
错误原因与修正代码
方法1问题说明
apply默认按列遍历(axis=0),不会逐行读取字段,导致匹配不到Pickup_Lat字段抛出KeyErroradd_to(m)调用对象错误,原写法对apply返回的Series对象调用,而非对每行生成的PolyLine对象调用,逻辑不成立
方法1修正后代码
df_filtered_all.apply(lambda row: folium.PolyLine( locations=[[row['Pickup_Lat'], row['Pickup_lng']], [row['Del_Lat'], row['Del_lng']]], color='red' ).add_to(m), axis=1)
新增axis=1指定按行遍历,同时将add_to(m)移入lambda内部,直接对每个生成的折线对象添加到地图
方法2问题说明
itertuples的name参数传入了Pandas,这是Pandas的保留命名,会触发内部逻辑冲突导致递归报错
方法2修正后代码
for row in df_filtered_all.itertuples(index=True, name=None): folium.PolyLine( [[row.Pickup_Lat, row.Pickup_lng], [row.Del_Lat, row.Del_lng]], color='red' ).add_to(m)
将name改为None后返回普通元组,可直接通过字段名读取属性,无需调用getattr
内容的提问来源于stack exchange,提问作者Darshana Esajenith
相关产品推荐
相关产品推荐

