我有一个数据框(df3)
df3 = pd.DataFrame({
'Origin':['DEL','BOM','AMD'],
'Destination':['BOM','AMD','DEL']})
由包含出发地/目的地的旅行数据组成,我正尝试使用3个字母的城市代码(df_s3)映射始发地和目的地机场的纬度和经度。
df_s3 = pd.DataFrame({
'iata_code':['AMD','BOM','DEL'],
'Lat':['72.6346969603999','72.8678970337','77.103104'],
'Lon':['23.0771999359','19.0886993408','28.5665']})
我试过一次映射它们,即
df4=pd.merge(left=df3,right=df_s3,how='left',left_on=['Origin'],right_on=['iata_code'],suffixes=['_origin','_origin'])
df5=pd.merge(left=df4,right=df_s3,how='left',left_on=['Destination'],right_on=['iata_code'],suffixes=['_destination','_destination'])
这将更新数据帧中的值,但与原始纬度/经度相对应的列具有“ _destination”作为后缀
我什至通过结合两者实现了理想的远景,即
df4=pd.merge(left=df3,right=df_s3,how='left',left_on=['Origin','Destination'],right_on=['iata_code','iata_code'],suffixes=['_origin','_destination'])
这两个似乎都不起作用。关于如何使其在较大的数据集中工作,同时保持较低的处理时间的任何建议。
您的解决方案几乎是正确的。但是您需要在第二次合并中指定原点后缀:
df4=pd.merge(left=df3,
right=df_s3,how='left',
left_on=['Origin'],
right_on=['iata_code'])
df5=pd.merge(left=df4,
right=df_s3,how='left',
left_on=['Destination'],
right_on=['iata_code'],
suffixes=['_origin', '_destination'])
在第一次合并中,由于没有重叠,因此不需要指定任何后缀。在第二个合并中,您需要为右侧和左侧指定后缀。右侧是从原点开始的经度和纬度,左侧是从目的地开始的经度和纬度。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句