繁体   English   中英

在最大偏差内比较两个 pandas 数据帧中的值

[英]Comparing values in two pandas dataframes within a maximum deviation

我有 2 个 pandas 数据帧:

df_func = pd.DataFrame({
    'col_ref': [1, 4],
    'value1': [12.0, 13.1], 'value2': [55.1, 22.1],
    'value3': [22.2, 10.0], 'value4': [111, 0],
}).set_index('col_ref')

df_val = pd.DataFrame(
    {'col_ref': [4, 1], 'value': [13.1, 1.0]}
).set_index('col_ref')

和 4 个变量max_deviation_value1 max_deviation_value2 max_deviation_value3 max_deviation_value4包含df_func中每列允许的最大偏差。

例如,说:

max_deviation_value1 = 1.5
max_deviation_value2 = 2
max_deviation_value3 = 4
max_deviation_value4 = 2.3

col_ref相同时,如何将df_valvalue列中的每一行与df_func中所有列的相应值进行比较,并检查偏差是否在相应的可接受的最大偏差值范围内?

Obs.:虽然col_ref是两个 DataFrame 中的索引,但它不一定是相同的顺序。

我们需要向 pandas 表明我们的意思是逐行减去df_val's 'value' (从每列value{i}中):

diff = df_func.subtract(df_val.squeeze(), axis=0)

>>> diff
         value1  value2  value3  value4
col_ref                                
1          11.0    54.1    21.2   110.0
4           0.0     9.0    -3.1   -13.1

现在,关于max_deviation值:最简单的方法是将它们放在一个系列中。 例如:

max_deviation = pd.Series(dict(
    value1=1.5,
    value2=2.0,
    value3=4.0,
    value4=2.3,
))

然后,比较实际上是这样写的:

>>> diff.abs() <= max_deviation
         value1  value2  value3  value4
col_ref                                
1         False   False   False   False
4          True   False    True   False

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM