Проверка pandas DataFrame с помощью pandera, где отфильтрованная серия, которая может иметь или не иметь значения, терпиPython

Программы на Python
Anonymous
Проверка pandas DataFrame с помощью pandera, где отфильтрованная серия, которая может иметь или не иметь значения, терпи

Сообщение Anonymous »

У меня есть пример DataFrame ниже

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

import pandas as pd
import pandera as pa

schema = pa.DataFrameSchema({
'Invoice Type': pa.Column(str, pa.Check(lambda s: s.isin(['Invoice', 'Credit']))),
'Quantity': pa.Column(
int,
checks=[
pa.Check(
lambda df: df[True] < 0,
groupby=lambda df: (
df.assign(is_credit=lambda d: d["Invoice Type"] == 'Credit').groupby(['is_credit'])
),
name = 'negative credits quantities'),
pa.Check(
lambda df: df[True] >= 0,
groupby=lambda df: (
df.assign(is_invoice=lambda d: d['Invoice Type'] == 'Invoice').groupby(['is_invoice'])
),
name = 'postitive invoices quantities'),
]),
'Customer Number': pa.Column(str)
})

df = pandas.DataFrame(
{'Quantity': [1, 2, -3],
'Invoice Type': ['Invoice', 'Invoice', 'Credit'],
'Customer Number': ['ABC', 'ABC', 'DEF']}
)
Это правильно идентифицирует все отрицательные кредиты и положительные счета-фактуры. Проблема возникает тогда, когда у меня нет значений для этой конкретной серии. Обычно у меня возникают ситуации, когда кредитов нет, пример ниже:

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

df = pandas.DataFrame(
{'Quantity': [1, 2, 3],
'Invoice Type': ['Invoice', 'Invoice', 'Invoice'],
'Customer Number': ['ABC', 'ABC', 'DEF']}
)
это означает, что DataFrame со всеми счетами завершается с ошибкой ключа. Как я могу гарантировать, что это пройдет проверку, если в DataFrame присутствует только один тип счета


Подробнее здесь: https://stackoverflow.com/questions/785 ... -may-or-ma

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