比较两个数据帧中的值,若差值大于设定值,则生成报告

2024-09-24 06:23:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有2个数据帧(主数据帧和从数据帧) 看起来像下面

# Master 
   C   D    E    F   G
0  5  44  4.0   33  22
1  1   0  4.5  565  11


# Slave
   C   D    E      F   G
0  5  44  4.0   33.0  22
1  1   4  6.5  562.5  10

预期结果(突出显示差异大于1的单元格)

   C   D    E      F   G
0  5  44  4.0   33.0  22
1  1   4  6.5  562.5  10

其中46.5562.5突出显示

Picture attached for better understanding.

我想比较两个数据帧,并想突出显示在新创建的数据帧中差异超过SET VALUE( >1)的单元格。对于整个数据帧,设置值=1是常量。 请注意,差异应基于绝对值。i、 eABS( master- slave)

我想使用numpy np.isclose函数来实现我的目标

对于包含200行和300列的较大数据帧,应该会发生这种情况。 此处显示的数据框较小,便于理解

  • 单元格:D2:由于(D2_MASTER) -(D2_Slave)= 0- 4 = -4,需要突出显示
  • 单元格:E2:由于(E2_MASTER) -(E2_Slave)= 4.5- 6.5 = -2,需要突出显示
  • 单元格:F2:由于(F2_MASTER) -(F2_Slave)= 565- 562.5.5 = 2.5,需要突出显示
  • 单元格:G2:自(G2_MASTER) -(G2_Slave)=11- 10 = 1以来没有突出显示(由于差异在限制范围内,因此不应突出显示)

我刚开始用python编写代码,自己使用pandas,我承认我有点迷路了

感谢您阅读本文,并提前感谢您的建议和反馈

代码

for ind,row in dfmaster.iterrows():
    print(row)
    (dfmaster.iloc())=np.isclose ( (dfmaster.iloc())  , (dfmaster.iloc())  , atol=1)#.any()

Tags: 数据代码masterfornp差异slaverow
1条回答
网友
1楼 · 发布于 2024-09-24 06:23:15

让我们试试style.format

def highlight_error(df):
    return pd.DataFrame(np.where(df.sub(slave).abs() > 1, 'background-color:red', ''),
                        df.index, df.columns)

master.style.apply(highlight_error, axis=None)

在Jupyter笔记本上,您将获得:

enter image description here

相关问题 更多 >