微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我是否使用合并或联接来比较两个数据帧?

这个问题已经在这里有了答案:            >            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 举报,一经查实,本站将立刻删除。

相关推荐