标签:PY函数
在Excel数据处理中,经常用到双向查找,通常我们使用包含INDEX函数、MATCH函数等嵌套公式组合来实现,遇到复杂情况时难免有些繁琐。
Excel引入Python后,也内置了Pandas库,让我们可以简单灵活地实现双向查找。下面通过一个简单的示例来演示如何实现,示例数据如下图1所示。

图1
这个数据集包含了一些超市的数据。每行为一个超市数据,共四列:超市、位置、人流量和好评率。
双向查找通过行列索引来定位其交叉处的单元格,从而获取数据。例如,查找“好逛”超市的好评率,会得到95.66%。下面我们使用Python来获取这个数据。
首先,在单元格中输入:
=py
按Tab键进入Python模式。
然后,再其中输入:
Supermarket_df=xl(“A1:D6”, headers=True)
结果生成一个pandas数据框(DataFrame),包含行、列、标题和值,也附带了一个强大的索引系统。如下图2所示。

图2
接着,设置查找字段作为索引:
Supermarket_df = Supermarket_df.set_index(“超市”)
这一步很重要。它告诉pandas,使用超市名称作为行标签。现在可以通过超市名称来引用它们,而不是通过它们的位置来引用行。结果如下图3所示。

图3
现在,我们可以来查找“好逛”超市的人流量:
Supermarket_df.loc[“好逛”,”好评率”]
结果如下图4所示。

图4
其中,.loc[]中的第一项标识行,第二项标识列。我们知道,在Excel中,可能需要在第一列中匹配超市名称,并在标题行中匹配字段名称;在pandas中,一旦DataFrame被正确索引,就可以按名称直接指向行和列。
我们可以返回多列:
Supermarket_df.loc["好逛",["人流量","好评率"]]
结果如下图5所示。

图5
还可以返回多行多列:
Supermarket_df.loc[["好逛","邻家小超"],["位置","人流量"]]
结果如下图6所示。

图6
可以看到,pandas让实现变得很简洁,可以通过传递行标签和列标签列表来扩展查找,而不是重写或嵌套更复杂的公式。
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。