一般来说,Excel能实现的操作,python都能实现,今天就来探究一下python实现Excel的vlookup吧!
pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
DataFrame是类似表的结构,由多个Series组成的DataFrame 是一个二维的数组结构,类似二维数组。
DataFrame 构造方法如下:
pandas.DataFrame( data, index, columns, dtype, copy)
参数说明:
data:一组数据(ndarray、series, map, lists, dict 等类型)。
index:索引值,或者可以称为行标签。
columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。
dtype:数据类型。
copy:拷贝数据,默认为False。
重点参考原文出处:https://www.cnblogs.com/JINGSOLO/p/16882504.html
代码如下:
import pandas as pd
创建表1,代码如下:
# 创建表1
df1 = pd.DataFrame({
'A': ['apple', 'banana', 'cherry', 'kiwi'],
'B': [30, 20, 25, 15]
})
print(df1)
创建表2,代码如下:
# 创建表2
df2 = pd.DataFrame({
'A': ['banana', 'cherry', 'kiwi', 'pear'],
'C': ['good', 'better', 'best', 'bad'],
'D': ['1', 'better', 'best', 'bad']
})
print(df2)
使用VLOOKUP将表2中的’C’列数据匹配到表1中,代码如下:
# 使用VLOOKUP将表2中的'C'列数据匹配到表1中
df3 = df1.merge(df2[['A', 'C']], on='A', how='left')
# 将匹配结果输出
print(df3)
# 使用VLOOKUP将表2中的'C'列和'D'列数据匹配到表1中
df3 = df1.merge(df2[['A', 'C','D']], on='A', how='left')
# 将匹配结果输出
print(df3)
# 创建表1
df1 = pd.DataFrame({
'A': ['apple', 'banana', 'cherry', 'kiwi'],
'B': [30, 20, 25, 15]
})
# 创建表2
df2 = pd.DataFrame({
'A': ['banana', 'cherry', 'kiwi', 'pear'],
'C': ['good', 'better', 'best', 'bad'],
'D': ['1', 'better', 'best', 'bad']
})
# 使用VLOOKUP将表2中的'C'列和'D'列数据匹配到表1中
df3 = df1.merge(df2[['A', 'C','D']], on='A', how='left')
# 将匹配结果输出
print(df3)
代码如下:
#导入库
import pandas as pd
读取表1,代码如下:
#读取表1:
df_1 = pd.read_excel(r"./表1.xlsx", sheet_name="Sheet1")
print(df_1)
#读取表2:
df_2 = pd.read_excel(r"./表2.xlsx", sheet_name="Sheet1")
print(df_2)
使用VLOOKUP将表2中的性别列数据匹配到表1中,代码如下:
#使用VLOOKUP将表2中的性别列数据匹配到表1中
'''
merge(df_2[['姓名','性别']]表示匹配表2的数据范围、想拿到的数据为'性别',on='姓名'表示按姓名匹配,
how='left'表示左连接、即表1数据固定不变、表2的'性别'列根据匹配结果添加到表1的最右侧)
'''
df_3 = df_1.merge(df_2[['姓名','性别']],on='姓名',how='left')
print(df_3)
保存到excel,代码如下:
#将结果数据保存到新表
df_3.to_excel(r"./结果表.xlsx", encoding='utf-8', sheet_name="Sheet1", index=False)
print("保存成功")
#导入库
import pandas as pd
#读取表1:
df_1 = pd.read_excel(r"./表1.xlsx", sheet_name="Sheet1")
# print(df_1)
#读取表2:
df_2 = pd.read_excel(r"./表2.xlsx", sheet_name="Sheet1")
# print(df_2)
#使用VLOOKUP将表2中的性别列数据匹配到表1中
df_3 = df_1.merge(df_2[['姓名','性别']],on='姓名',how='left')
print(df_3)
#将结果数据保存到新表
df_3.to_excel(r"./结果表.xlsx", encoding='utf-8', sheet_name="Sheet1", index=False)
print("保存成功")
备注:"./表1.xlsx"表示路径,当前表1与所写代码在同一个文件目录下,如图所示:
pd.merge函数是把两个数据框按某种方式拼接起来:
pd.merge(left, right, how= 'inner', on=None, left_on=None, right_on=None, left_index = False, right_index = False, sort = False, suffixes=('_x', '_y'), copy = True, indicator = False, validate=None)
参数详解:
left:待拼接的左侧数据框。
right:待拼接的右侧数据框。
how:左右两个数据框的连接方式。可选‘left’、‘right’、‘outer’、‘inner’,默认为inner。
on:左右两个待拼接数据框有共同列名,且按该列拼接两个数据框时使用该参数。
left_on:拼接两个数据框时,左数据框对应连接关键字(可为列表)。
right_on:拼接两个数据框时,右数据框对应连接关键字(可为列表)。
left_index:若为True,则按左数据框的索引连接两个数据框。
right_index:若为True,则按右数据框的索引连接两个数据框。
sort:按字典顺序通过连接键对结果数据框进行排序。
suffixes:为左右数据框中重复列名定义后缀。默认加(‘x’,‘y’)。
重点参考了CSDN博主「阿黎逸阳」的原创文章《数据分析常用函数—pd.merge》原文链接:https://blog.csdn.net/qq_32532663/article/details/108500638
以上就是今天要讲的内容,本文仅仅简单介绍了pandas的vlookup使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法,更多的学习等待我们继续探究,朋友们可以多点尝试使用python解决问题。