擅长:python、mysql、java
<p>我就是这样管理的,它需要两次合并!请记住,使用相同名称的多个列是不利于良好实践的</p>
<pre><code>import pandas as pd
df1 = pd.DataFrame({'router_name':[1,2,3,4],'firewall':['firewall1','firewall2','firewall3','firewall4']})
df2 = pd.DataFrame({'device_name':[2,3,'firewall1','firewall2'],'hardware':['cisco111','cisco222','cisco333','cisco444']})
df3 = df1.merge(df2,how='left',left_on='router_name',right_on='device_name').merge(df2,how='left',left_on='firewall',right_on='device_name').drop(columns=[x for x in list(df3) if x.startswith('device')])
print(df3)
</code></pre>
<p>输出:</p>
<pre><code> router_name firewall hardware_x hardware_y
0 1 firewall1 NaN cisco333
1 2 firewall2 cisco111 cisco444
2 3 firewall3 cisco222 NaN
3 4 firewall4 NaN NaN
</code></pre>