比较两个数据框熊猫

时间:2020-06-23 18:58:06

标签: python pandas dataframe compare difference

我有两个都包含数字的数据框。它们都具有相同的大小10x350(十列和350行),我想将它们进行比较并“做一些逻辑”

以下是一些摘录作为说明:

Dataframe 1:               Dataframe 2:
A      B     C             A      B     C
47.7   20.2  12.1          90.7   73.8  216.7
47.2   20    11.9          114.9  68    155.6
46.4   19.6  11.7          110.8  67.8  160.3

我想比较数据帧,如果数据帧2中的值较高,则存储差异。
(在此示例中,数据框2中的所有值都较高) 最后,所有与列的差异都应加起来

在这种情况下,差异之和为:

Sum_A = 175.1
Sum_B = 149.8
Sum_C = 496.9

我认为使用:

for index, row in df1.iterrows():

可能是可能的。但是我无法将两个数据框进行比较

2 个答案:

答案 0 :(得分:0)

您可以这样做:

df2.sub(df1).clip(lower=0).sum()

输出:

A    175.1
B    149.8
C    496.9
dtype: float64

答案 1 :(得分:0)

def VerifyTable(context,actual_table, expected_table):
            n = []
            for actual_tablecolumns in actual_table.columns:
                n.append(actual_tablecolumns)
            print (n)
            m = []
            for expected_tablecolumns in expected_table.columns:
                m.append(expected_tablecolumns)
            print (m)
            if n == m:
                for actual_tablevalues in actual_table.values:
                    nn.append(actual_tablevalues)
                print (nn)
                mm = []
                for expected_tablevalues in expected_table.values:
                    mm.append(expected_tablevalues)
                if nn == mm:
                    return True

            return False

另一个代码

def VerifyTable(context, actual_table, expected_table):
    #print("row count in actual table: " + str(len(actual_table.values)))
    currentRowIndex = -1
    currentColIndex = -1
    for row in actual_table.values:
        currentRowIndex = currentRowIndex + 1
        currentColIndex = -1 #reset column index
        for cell_by_column in row:
            currentColIndex = currentColIndex + 1
            assert cell_by_column == expected_table.values[currentRowIndex][currentColIndex], "Mismatch of corresponding cells comparing actual and expected: " + cell_by_column + " != " + expected_table.values[currentRowIndex][currentColIndex]
    #TODO: Write code to compare/verify column headers as well!