主题词:vlookup,concat,merge,fillna
今天在群里,有一个朋友提起了一个面试题,很简单很简单的题,
说的是AB两表,都有UID列,A表中的数值列有缺失值,请你匹配b表,把a中缺失值换成b表的值,奇就奇在出题人脑子有坑,谁家的数据库是这样的?,而且他还要只看到A表的两列,多一列算我输。(你牛啤)
1.excel-vlookup
其实这个东西excel处理起来真的是再快不过,首先把A表的空值筛选出来了,然后来一个vlookup,再取消筛选,打完收工。
下面就是Python了,群里讨论了半天,顺便我们捋一下Python里的拼接函数。
2.Python-concat都是ID为主键,num为数值
由此可见concat其实就是个拼接函数,无脑拼接
3.Python-merge
merge其实就是数据库里面的join函数。相较于concat,id只有一列了但这个是典型的左连接,他只适应于相同索引,不同列的拼接
4.python-np.where
到现在我们依然没有解决问题,这时候有大佬跳出来说,你不会把id设置索引啊,并提供一种where语法。
where其实就是excel里的if语句,可以看到,是匹配上了,但丢失了索引,同时他是按行匹配,8.8的索引是4,并不是3(同时where还要求AB必须是同样的数据条目,这里data2我删了一条,因为不删会报错)
5.Python-fillna
到最好,我突然想起来为什么不用空值填充?
完美解决问题,而且请注意,这里是按索引填充,3,8.8我多加了一行4,9.9