gpt4 book ai didi

python - 使用 pd.merge 从另一个数据帧映射数据帧中多列的值

转载 作者:行者123 更新时间:2023-12-01 06:36:51 25 4
gpt4 key购买 nike

我有一个数据框(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'])

这两个似乎都不起作用。有关如何使其在更大的数据集中工作同时保持较短处理时间的任何建议。

最佳答案

您的解决方案几乎是正确的。但需要在第二次合并时指定origin后缀:

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'])

在第一次合并中,您不需要指定任何后缀,因为没有重叠。在第二次合并中,您需要指定右侧和左侧的后缀。右侧是出发地的经度和纬度,左侧是目的地的经度和纬度。

关于python - 使用 pd.merge 从另一个数据帧映射数据帧中多列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59624254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com