我有两个数据帧,数据相似,如下所示:
样本表1:
device_id device_type ip_address mac_address port vlan
89 Router 10.10.10.13 ad3d.bb39.484a None 5.0
89 Router 10.10.10.21 0010.1d1a.7b67 None 5.0
89 Router 10.10.10.22 0010.4d5a.768d None 5.0
89 Router 10.10.10.23 0010.096a.7a8c None 5.0
样本表2:
device_id device_type mac_address port
305 Switch ad3d.bb39.484a Gi1/0/3
305 Switch 0010.1d1a.7b67 Gi1/0/4
305 Switch 0010.4d5a.768d Gi1/0/2
305 Switch 9a72.2dad.21f0 Gi1/0/22
我想在MAC地址上合并这两个,目前已经完成了
temp_merged_data = arp_data.merge(mac_data, on='mac_address', how='left')
这提供了数据
device_id_x device_type_x ip_address mac_address port_x vlan device_id_y device_type_y port_y
89 Router 10.10.10.13 ad3d.bb39.484a None 5.0 305 Router Gi1/0/3
89 Router 10.10.10.21 0010.1d1a.7b67 None 5.0 305 Router Gi1/0/4
89 Router 10.10.10.22 0010.4d5a.768d None 5.0 305 Router Gi1/0/2
89 Router 10.10.10.23 0010.096a.7a8c None 5.0 305 Router Gi1/0/22
我要做的是将列合并为覆盖,而不是切换…也就是说,如果存在一个MAC重复的MAC地址,并且它有一个路由器和一个交换机作为设备类型,我想从交换机中合并设备ID、端口和设备类型,并从路由器中删除数据。
如果不存在副本,请使用路由器中的数据。
简单逻辑是否可能实现这一点,还是需要复杂的函数?