在使用pandas处理Excel数据时,发现没有excel中的vlookup功能,使用merge连接又会得到不需要的字段。
尝试了几种其他的方法,效率都不是很理想,被匹配表的数据(20w+)。。。。
偶然想到list是有序的,因此通过使用建立一个list,然后使用index函数查找到字段的位置,
再通过pandas的loc定位到相对应的行,取出需要匹配的字段。。。试用了下,速度可以满足我的要求。
以下是代码部分:
def get_mac(item):
a = []
for x in item:
try:
mac_2 = list(data.loc[[sn.index(x)]]['匹配要取的字段'])[0] #定位到bb表的行,并取出要匹配的字段
print(x,mac_2)
a.append(mac_2)
except:
print(x,0)
a.append(0)
return a
df = pd.read_excel('aa.xlsx') #需要匹配的数据表
data = pd.read_excel('bb.xlsx') #被匹配的数据表
sn = [x for x in data['匹配字段']] #被匹配的数据表中的字段
df['匹配的列名称']=get_mac(df['需要匹配数据表的字段'])
网友评论