Как определить различия в кадре данных Polars при сбое Assert_series_equal/assert_frame_equal?Python

Программы на Python
Ответить
Anonymous
 Как определить различия в кадре данных Polars при сбое Assert_series_equal/assert_frame_equal?

Сообщение Anonymous »

Я использую pl.testing.assert_frame_equal для сравнения двух pl.DataFrame. Утверждение терпит неудачу. Обратная трассировка указывает на то, что в определенном столбце есть точные несоответствия значений.
Столбец, о котором идет речь, имеет тип bool. Он также содержит нулевые значения. В этом столбце более 20 000 строк, и мне нужно выяснить, в чем именно разница.
Я создал маску, которая показывает истинное значение значение всякий раз, когда существует разница между фактическим кадром данных и ожидаемым кадром данных.
mask = actual != expectation

Затем я заметил, что маска содержит только значения false и null в каждом столбце.
mask.sum().sum_horizontal() дает 0.
Это означает, что это, по-видимому, не лучший способ определить строки с различиями.
В в моем большом фрейме данных я ожидаю следующую ситуацию:
import polars as pl
from polars.testing import assert_frame_equal

df1 = pl.DataFrame(
{
"group": ["A", "A", "A", "B", "B"],
"value": [True, False, None, False, None]
}
)
df2 = pl.DataFrame(
{
"group": ["A", "A", "A", "B", "B"],
"value": [True, False, False, False, None]
}
)

Выполнение Asser_frame_equal(df1, df2) правильно приведет к ошибке AssertionError.
AssertionError: DataFrames are different (value mismatch for column 'value')
[left]: [True, False, None, False, None]
[right]: [True, False, False, False, None]

Тест на неравенство не помогает выявить различия, поскольку истинных значений нет.
df1 != df2

shape: (5, 2)
┌───────┬───────┐
│ group ┆ value │
│ --- ┆ --- │
│ bool ┆ bool │
╞═══════╪═══════╡
│ false ┆ false │
│ false ┆ false │
│ false ┆ null │
│ false ┆ false │
│ false ┆ null │
└───────┴───────┘


Подробнее здесь: https://stackoverflow.com/questions/791 ... qual-asser
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»