Обнаружение пропущенных значений в полярах на основе условийPython

Программы на Python
Ответить
Anonymous
 Обнаружение пропущенных значений в полярах на основе условий

Сообщение Anonymous »

В настоящее время я определяю строки с пропущенными значениями и фильтрую их в отчет. Я добавляю индекс и столбец «предупреждение».

Код: Выделить всё

report = (df.with_row_count("index")
.filter(pl.any(pl.col("*").is_null()) & pl.col("mandatory").eq("M"))
.with_columns(pl.lit("Missing value detected").alias("warning"))
)
Текущее требование заключается в том, что если значение «M» встречается в столбце «обязательный», а в той же строке встречается отсутствующее значение, эта строка добавляется в отчет. Теперь появилось новое дополнительное требование. Я объясню это на примере набора данных. Может быть так, что в столбце «столбец» могут быть одинаковые значения. В данном случае «фу». По первому правилу в отчет должна быть записана строка 2. Однако условие исключения теперь должно предотвратить это. Если уже одна строка не имеет нулей в столбце «столбец», все остальные равные значения в дальнейшем рассмотрении не учитываются. В данном случае строка 1 удовлетворяет этому условию, поэтому вторую строку рассматривать не следует.

Код: Выделить всё

df = pl.DataFrame(
{
"ID": ["1", "1", "1", "1", "1"],
"column": ["foo", "foo", "bar", "ham", "egg"],
"table": ["A", "B", "C", "D", "E"],
"value_a": ["tree", None, None, "bean", None,],
"value_b": ["Lorem", "Ipsum", "Dal", "Curry", "Dish",],
"mandatory": ["M", "M", "M", "CM", "M"],
}
)
print(df)

shape: (5, 6)
┌─────┬────────┬───────┬─────────┬─────────┬───────────┐
│ ID  ┆ column ┆ table ┆ value_a ┆ value_b ┆ mandatory │
│ --- ┆ ---    ┆ ---   ┆ ---     ┆ ---     ┆ ---       │
│ str ┆ str    ┆ str   ┆ str     ┆ str     ┆ str       │
╞═════╪════════╪═══════╪═════════╪═════════╪═══════════╡
│ 1   ┆ foo    ┆ A     ┆ tree    ┆ Lorem   ┆ M         │
│ 1   ┆ foo    ┆ B     ┆ null    ┆ Ipsum   ┆ M         │
│ 1   ┆ bar    ┆ C     ┆ null    ┆ Dal     ┆ M         │
│ 1   ┆ ham    ┆ D     ┆ bean    ┆ Curry   ┆ CM        │
│ 1   ┆ egg    ┆ E     ┆ null    ┆ Dish    ┆ M         │
└─────┴────────┴───────┴─────────┴─────────┴───────────┘
Ожидаемый отчет должен выглядеть так

Код: Выделить всё

shape: (2, 8)
┌───────┬─────┬────────┬───────┬─────────┬─────────┬───────────┬────────────────────────┐
│ Index ┆ ID  ┆ column ┆ table ┆ value_a ┆ value_b ┆ mandatory ┆ warning                │
│ ---   ┆ --- ┆ ---    ┆ ---   ┆ ---     ┆ ---     ┆ ---       ┆ ---                    │
│ i64   ┆ str ┆ str    ┆ str   ┆ f64     ┆ str     ┆ str       ┆ str                    │
╞═══════╪═════╪════════╪═══════╪═════════╪═════════╪═══════════╪════════════════════════╡
│ 1     ┆ 1   ┆ bar    ┆ C     ┆ null    ┆ Dal     ┆ M         ┆ Missing value detected │
│ 2     ┆ 1   ┆ egg    ┆ E     ┆ null    ┆ Dish    ┆ M         ┆ Missing value detected │
└───────┴─────┴────────┴───────┴─────────┴─────────┴───────────┴────────────────────────┘
Как реализовать дополнительное условие для правильного определения строк с пропущенными значениями?

Подробнее здесь: https://stackoverflow.com/questions/756 ... conditions
Ответить

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

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

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

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

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