[英]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_val
的value
列中的每一行与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.