我有两份CSV文件.一个数据集df1,只有一列,如下所示

   deviceNames
0     12.132.182.
1     12.134086
2.     12.2.03676
3     12.1312.11
4     12.12.9534

另一个是df2.,有many列,但相关的列是

`       deviceNames        macAddress
0         12.080084  001350050039517e
1         12.080085  001350050039448c
2.         12.080086  00135005003954c9
3         12.080087  00135005003943bc
4         12.080088  0013500500394ff5
...            ...               ...
107549    C052.4751  0013500500EA4DEB
107550         NaN               NaN
107551         NaN               NaN
107552.         NaN               NaN
107553    C05912.66  00135005010FB39D`

我想要的是根据df1中的设备名称将mac地址信息从df2.转移到df1.

所以我希望输出如下所示


       deviceNames        macAddress
0         12.132.182.  001350012.4039517e
1         12.134086  0013501340039448c
2.         12.2.03676  001350440031954c9
3         12.1312.11  0013503300w3943bc
4         12.12.9534  00135032.500394ff5

My attempts

  • 以下是我试图解决这个问题的几个try
1
df2.[df2.['deviceNames'].isin(df1['deviceNames'])]
2.
 s = (df2..loc[df2..deviceNames.isin(df1.deviceNames.values.tolist())]
     .drop_duplicates('df1')
     .set_index('df1')['macAddress'])

df1['newcolumn'] = df1['newcolumn'].map(s)

推荐答案

您正在寻找的是merge,但您的预期输出与您的两个输入数据帧不匹配,因此可能我错了:

out = df1.astype({'deviceNames': str}).merge(df2, on='deviceNames', how='left')

Python相关问答推荐

从收件箱中的列中删除html格式

删除字符串中第一次出现单词后的所有内容

如何在给定的条件下使numpy数组的计算速度最快?

删除marplotlib条形图上的底边

在www.example.com中使用`package_data`包含不包含__init__. py的非Python文件

matplotlib + python foor loop

matplotlib图中的复杂箭头形状

如何在Python中将超链接添加到PDF中每个页面的顶部?

如何在Gekko中处理跨矢量优化

随机森林n_估计器的计算

为什么我的scipy.optimize.minimize(method=";newton-cg";)函数停留在局部最大值上?

根据过滤后的牛郎星图表中的数据计算新系列

时间戳上的SOAP头签名无效

按最大属性值Django对对象进行排序

Python:使用asyncio.StreamReader.readline()读取长行

如何在networkx图中提取和绘制直接邻居(以及邻居的邻居)?

使用OpenPYXL切换图表上的行/列

如何计算二十面体每条三角形边的中点

如何正确设置ALLOWED_HOST以允许网络中的其他计算机访问Web

在行数据为向量的DataFrame上计算逐行更改