我有两张excel表格需要比较。其中一个可能有更多的行/列,因此相比之下,我需要放大更小的数据帧(并可能用nan填充多余的数据帧?)使比较成为可能。你知道吗
我需要使用dataframe与较小的dataframe进行比较:
代码附在下面。我基本上是遍历两个文件夹,检查具有相同名称的文件对,这样我就可以比较它们之间的Sheet1。你知道吗
import pandas as pd
import os
hypPath = ("C:\\dirTest\\hyperionDIR\\")
cogPath = ("C:\\dirTest\\cognosDIR\\")
hypFiles = os.listdir(hypPath)
cogFiles = os.listdir(cogPath)
for hypFilename in hypFiles:
for cogFilename in cogFiles:
if cogFilename == hypFilename:
# print("file: " + cogFilename + " has a pair!")
hypDf = pd.ExcelFile(hypPath + hypFilename)
cogDf = pd.ExcelFile(cogPath + cogFilename)
hypDf = hypDf.parse(0)
cogDf = cogDf.parse(0)
if hypDf.size >= cogDf.size:
diffFile = hypDf.copy()
cogDf = cogDf.align(hypDf,axis = None)
else:
diffFile = cogDf.copy()
hypDf = hypDf.align(cogDf,axis = None)
for row in range(diffFile.shape[0]):
for col in range(diffFile.shape[1]):
value_OLD = hypDf.iat[row, col]
value_NEW = cogDf.iat[row, col]
if value_OLD == value_NEW:
diffFile.iat[row, col] = cogDf.iat[row, col]
else:
diffFile.iat[row, col] = ('{}→{}').format(value_OLD, value_NEW)
对于值\u NEW=cogDf.iat公司[行,列] 代码抛出: AttributeError:“tuple”对象没有属性“iat”
我试图使用iat属性遍历数据帧中的每个单元格,并比较两张表之间的差异。这就是为什么我要考虑将tuple(使用.align得到的)转换为dataframe,以便能够比较.iat上的dataframes
所需的输出可能与本教程中的几乎相同:https://matthewkudija.com/blog/2018/07/21/excel-diff/
理想情况下,我还希望将列名视为数据框架的一部分(相比之下,我有时也会得到列命名差异,但列中的数据在两个excel文件之间是相同的集)
coldspeed是正确的您可以使用
align
。你知道吗这应该适用于你问题的第二部分。你知道吗
相关问题 更多 >
编程相关推荐