将pandas数据框值与另一个数据框中的多个列进行比较

时间:2019-07-17 10:49:18

标签: python pandas

我是python的新手,正在尝试使用两个pandas数据帧来确定池正在使用哪些IP地址。数据如下:

数据框1:

poolName                          members1                                         members2 
1 eft-eu.company.com_22_pool  [10.51.237.59, comp-x-ws66_eft-eu.company.com:22] [10.51.237.60, comp-x-ws67_eft-eu.company.com:22]
2 eft-eu.company.com_443_pool [10.51.237.59, comp-x-ws66_eft-eu.company.com:443] [10.51.237.60, comp-x-ws67_eft-eu.company.com:443]
3 eft-eu.companyre.com_22_pool [10.51.237.50, comp-x-ws66_eft-eu.companyre.com:22] [10.51.237.51, comp-x-ws67_eft-eu.company.com:22]

数据框2:

 nodeName                          nodeIP
 comp-x-ws66_eft-eu.company.com    10.51.237.59
 comp-x-ws50_eft-eu.company.com    10.51.237.50
 comp-x-ws55_eft-eu.company.com    10.51.237.55

我想将 dataframe2 中的nodeIP地址与members1members2列下的IP地址 dataframe1 (并且可能members3/4/5的成员超过两个)

dataframe2['nodeIP'].isin(dataframe1[[members1, members2]]).value_counts()

返回:

Out[146]: 
False    1394
Name: nodeIP, dtype: int64

我怀疑这是因为我应该在 dataframe1 中的列members1members2上与子值dataframe1['members'][1][0]进行比较,但我不是确定如何在比较语句中声明这一点。是否需要for循环才能遍历该列以访问子值,或者是否有与dataframe1['members1'][*][0]等效的东西?

最终我想返回用于匹配IP地址的poolName。

0 个答案:

没有答案