我刚开始尝试在我的作品中使用python,
这是我得到的excel工作表:
我需要得到他们之间差异的结果:
|A | B|C | D|
|SRHAVWRQT | 1|SRHAVWRQT | 4|
|SCMARAED3MQT| 0|SCMARAED3MQT| 2|
|WVVMUMCRQT | 7|WVVMUMCBR | 7|
...
...
我知道如何像我那样在excel里解决这个问题,
与索引+匹配和差异:
=G3-INDEX(B:B,MATCH(F3,A:A,0))
比我需要原始数据时得到的结果还要多
但我会怎么在蟒蛇身上表演呢?哪种工具会被使用?(例如熊猫?小矮人?)
对于其他的答案,我读过,但似乎只是执行索引/匹配函数和/或他们试图解决多个工作表之间的计算,但我只需要2列的结果。
使用Python计算从一个工作表到另一个工作表的值的匹配百分比
https://focaalvarez.medium.com/vlookup-and-index-match-equivalences-in-pandas-160ac2910399
或者在python中有一种完全不同的处理方式
发布于 2021-09-08 04:43:20
一个典型的用例。对于任何涉及Excel和Python的内容,您都需要熟悉Pandas库;它可以处理您所要求的大量内容。
现在,如何特别解决这个问题。我将假设相关工作表中的数据如上面所示;没有列标题,从第1行到A、B、C和D列中的数据可以使用下面的代码将其加载到python中;这种加载将在没有列名或行名的情况下加载它,因此在python中加载的数据将以0,0而不是"A1“开头,因为Pandas中的行和列从0开始。
import pandas as pd
excelData = pd.read_excel("<DOCUMENT NAME>", sheet_name="<SHEET NAME>", header=None)
加载数据后,需要将月份1数据与其月份2索引匹配。这有点复杂,我建议的方法是使用"def“关键字定义您自己的python函数。下面是我迅速提出的一个版本:
#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
将是一个包含以下列的三列表:
month2_data
中哪一行的索引包含匹配的列C和D数据。将这三条信息放在一起,您就可以计算出其他统计数据了。
https://stackoverflow.com/questions/69096912
复制相似问题