python - pandas 通过数据框中的条目替换 id 号
问题描述
我有 2 个不同的数据框。一个看起来像这样
arriv depart stop_id
12:35 12:40 a2b
23:00 01:00 a1e
其他看起来像这样:
stop_id lon lat name
a1e 12.1 13.2 Old Church
a2b 12.2 13.1 Postal Service
现在我想用数据的子集创建一个看起来像这样的数据框:
arriv depart stop_id lon lat name
12:35 12:40 a2b 12.2 13.1 Postal Service
23:00 01:00 a1e 12.1 13.2 Old Church
基本上合并了两个数据框,但是对于停靠点列表有大量的双重条目。什么是这样做的好方法?
解决方案
我相信你想要的是:“对于第一个数据帧中的每个实例,合并 lon lat 和 name 列(在另一个数据帧中可用)。”
如果是这种情况,您可以使用 pd.merge():
import pandas as pd
timeDF = pd.DataFrame({
"arriv":["12:35","23:00","13:35","12:35"],
"depart":["12:40","01:00","14:25","14:35"],
"stop_id":["a2b","a1e","a2b","a1e"]
})
stopDF = pd.DataFrame({
"long":["12.1","13.1"],
"lat":["13.0","14.3"],
"name":["nameA","nameB"],
"stop_id":["a2b","a1e"]
})
print(pd.merge(timeDF,stopDF,how='left',on='stop_id'))
输入:
arrive_departure_dataframe:
arriv depart stop_id
0 12:35 12:40 a2b
1 23:00 01:00 a1e
2 13:35 14:25 a2b
3 12:35 14:35 a1e
stops_information_dataframe:
long lat name stop_id
0 12.1 13.0 nameA a2b
1 13.1 14.3 nameB a1e
输出:
arriv depart stop_id long lat name
0 12:35 12:40 a2b 12.1 13.0 nameA
1 23:00 01:00 a1e 13.1 14.3 nameB
2 13:35 14:25 a2b 12.1 13.0 nameA
3 12:35 14:35 a1e 13.1 14.3 nameB