сравнение всех данных до 5 знаков после запятой с использованием numpy .testing.assert_almost_equal и вывода ошибок в качестве шаблона желания? - PullRequest
1 голос
/ 05 августа 2020

У меня есть фрейм данных как

ent_id  buy new_perc_buy    sell    new_perc_sell
123 0.116211962 0.116198415 0.496314325 0.496256466
124 0.007214061 0.00721322  0.153933545 0.1539156
125 0.003410283 0.003409886 0.499973272 0.499914987
126 0.231587543 0.231560545 0.699696021 0.699614452
127 0.056794334 0.056787713 0.235372057 0.235344618
128 0.130377754 0.130362555 0.187575903 0.187554036
129 0.998294858 0.99817848  0.917661563 0.917554585
130 0.208247701 0.208223424 0.575032323 0.574965287

, теперь мне нужно сопоставить buy с new_perc_buy (до 5 знаков после запятой) аналогично sell с new_perc_sell (до 5 знаков после запятой) с соответствием ent_id, и если он не соответствует установленному условию, он терпит неудачу

, поскольку я использую numpy .testing. assert_almost_equal

import numpy 
numpy.testing.assert_almost_equal(df_ss['rnk_perc_buy'],df_ss['new_perc_rnk_perc_buy'], decimal=5, err_msg='false', verbose=True) 

Я получаю эту ошибку

ValueError                                Traceback (most recent call last)

in () 1 import numpy ----> 2 numpy .testing.assert_almost_equal (df_ss ['rnk_perc_buy'], df_ss ['new_perc_rnk_perc_buy'], decimal = 5, err_msg = 'false', verbose = True) 3 # df_ss.head (10)

C: \ Program Files \ Anaconda3 \ lib \ site-packages \ numpy \ testing_private \ utils.py в assert_almost_equal (фактический, желаемый, десятичный, err_msg, подробный) 588 # проверяем, что оба являются nan, если есть nan, и проверяем на равенство 589 # в противном случае -> 590, если нет (гисфинит (желаемый) и гисфинит (фактический)): 591, если гиснан (желаемый) или гиснан (фактический): 592, если нет (гиснан (желаемый) и гисна n (фактическое)):

C: \ Program Files \ Anaconda3 \ lib \ site-packages \ pandas \ core \ generi c .py в ненулевое (собственное) 1477 def ненулевое значение (self): 1478 raise ValueError (-> 1479 f "Истинное значение {type (self). name } неоднозначно. "1480" Используйте a.empty, a.bool (), a.item (), a.any () или a.all (). "1481)

ValueError: Значение истинности Серии равно неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().

также там, где я получаю сообщение об ошибке, как показано ниже

AssertionError: 
Arrays are not almost equal to 5 decimals for **ent_id 123**
 ACTUAL: 0.116211962
 DESIRED: 0.116198415  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...