首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中哪个函数可以用INDEX+MATCH(excel)进一步计算

在python中哪个函数可以用INDEX+MATCH(excel)进一步计算
EN

Stack Overflow用户
提问于 2021-09-08 04:10:24
回答 1查看 84关注 0票数 0

我刚开始尝试在我的作品中使用python,

这是我得到的excel工作表:

  • A产品名称为七月,
  • 作为产品质量在7月份,
  • C作为产品名称在8月,
  • D作为产品质量在8月份

我需要得到他们之间差异的结果:

  1. 在下个月找到确切的出售数量
  2. 计算减法
代码语言:javascript
运行
复制
|A           |   B|C           |   D|
|SRHAVWRQT   |   1|SRHAVWRQT   |   4|
|SCMARAED3MQT|   0|SCMARAED3MQT|   2|
|WVVMUMCRQT  |   7|WVVMUMCBR   |   7|
...
...

我知道如何像我那样在excel里解决这个问题,

与索引+匹配和差异:

代码语言:javascript
运行
复制
=G3-INDEX(B:B,MATCH(F3,A:A,0))

比我需要原始数据时得到的结果还要多

结果执行

但我会怎么在蟒蛇身上表演呢?哪种工具会被使用?(例如熊猫?小矮人?)

对于其他的答案,我读过,但似乎只是执行索引/匹配函数和/或他们试图解决多个工作表之间的计算,但我只需要2列的结果。

如何在Python中执行等效的Excel索引匹配

索引匹配与python

使用Python计算从一个工作表到另一个工作表的值的匹配百分比

https://focaalvarez.medium.com/vlookup-and-index-match-equivalences-in-pandas-160ac2910399

或者在python中有一种完全不同的处理方式

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-08 04:43:20

一个典型的用例。对于任何涉及Excel和Python的内容,您都需要熟悉Pandas库;它可以处理您所要求的大量内容。

现在,如何特别解决这个问题。我将假设相关工作表中的数据如上面所示;没有列标题,从第1行到A、B、C和D列中的数据可以使用下面的代码将其加载到python中;这种加载将在没有列名或行名的情况下加载它,因此在python中加载的数据将以0,0而不是"A1“开头,因为Pandas中的行和列从0开始。

代码语言:javascript
运行
复制
import pandas as pd
excelData = pd.read_excel("<DOCUMENT NAME>", sheet_name="<SHEET NAME>", header=None)

加载数据后,需要将月份1数据与其月份2索引匹配。这有点复杂,我建议的方法是使用"def“关键字定义您自己的python函数。下面是我迅速提出的一个版本:

代码语言:javascript
运行
复制
#Extract columns "A & B" and "C & D" to separate month 1 and 2 dataframes respectively.
month1_data: pd.DataFrame = excelData.iloc[:, 0:2]
month2_data: pd.DataFrame = excelData.iloc[:, 2:4]

#Define a matching function to match a single row (series) with its corresponding row in a passed dataframe
def matchDataToIndex(dataLine: pd.Series, comparison: pd.DataFrame):
    matchIndex = list(comparison.iloc[0].tolist()).index(dataLine.tolist()[0])
    return dataLine.append(pd.Series([matchIndex]))

#Apply the defined matching function to each row of the month 1 data
month1_data_with_match = month1_data.apply(matchDataToIndex, axis=1, args=(month2_data,))

如果您只是刚刚开始使用Python,那么这里有很多您可能并不熟悉的东西,因此我建议您熟悉Pandas。尽管如此,在运行之后,变量month1_data_with_match将是一个包含以下列的三列表:

  • 您的A列产品名称数据。
  • 您的B栏产品数量数据。
  • 表示month2_data中哪一行的索引包含匹配的列C和D数据。

将这三条信息放在一起,您就可以计算出其他统计数据了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69096912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档