这个问题已经在这里有了答案: > Pandas Merging 101 2个
我必须使用新旧数据集.两者应具有三个共同的列:mmsi,d,ts.
old
mmsi d lat lon ts
0 0 93 40.3601 122.179 1458213600
1 0 93 40.3601 122.179 1458214200
2 0 93 40.3601 122.179 1458214800
3 0 93 40.3601 122.179 1458217200
4 0 93 40.3601 122.179 1458220800
new
mmsi d ts lat lon
0 0 77 1458211800 46.3675533333 48.01107
1 0 77 1458212400 46.3675533333 48.01107
2 0 77 1458213000 46.3675533333 48.01107
3 0 77 1458215400 46.3675533333 48.01107
4 0 77 1458219000 46.3675533333 48.01107
两组应该有共同的mmsi,d,ts,但是当我执行合并时,结果数据帧的形状与旧的或新的形状有很大不同.
我是否在这种情况下使用合并合并?如何合并两个数据框,以便可以比较经纬度?
解决方法:
您可以尝试使用参数how =’inner’的merge
:
print pd.merge(new,old,on=['mmsi','d','ts'], how='inner')
样品:
print new
mmsi d ts lat lon
0 0 77 1458213600 46.367553 48.01107
1 0 77 1458214200 46.367553 48.01107
2 0 77 1458213000 46.367553 48.01107
3 0 77 1458215400 46.367553 48.01107
4 0 77 1458217200 46.367553 48.01107
print old
mmsi d lat lon ts
0 0 77 48.01107 122.179 1458213600
1 0 77 48.01107 122.179 1458214200
2 0 77 48.01107 122.179 1458214800
3 0 77 48.01107 122.179 1458217200
4 0 77 48.01107 122.179 1458220800
#added custom suffixes
print pd.merge(new,old,on=['mmsi','d','ts'], how='inner', suffixes=('_new','_old'))
mmsi d ts lat_new lon_new lat_old lon_old
0 0 77 1458213600 46.367553 48.01107 48.01107 122.179
1 0 77 1458214200 46.367553 48.01107 48.01107 122.179
2 0 77 1458217200 46.367553 48.01107 48.01107 122.179
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。