Einnahme einer NULL INT -Säule: Pandas und PanderaPython

Python-Programme
Anonymous
 Einnahme einer NULL INT -Säule: Pandas und Pandera

Post by Anonymous »

Ich verwende Pandas mit Pandera für die Schema -Validierung, aber ich bin auf ein Problem gestoßen, da in den Daten eine Null -Integer -Spalte enthält. < /p>

Code: Select all

from prefect import task, Flow          #type:ignore
from pandera import Check, Column, DataFrameSchema
import prefect
import pandas as pd
import pandera as pa
import numpy as np

def pschema(d):
logger = prefect.utilities.logging.get_logger()  # type: ignore
engine = connect_db(prefect.config.kv.p.staging_db_constring, logger) #type:ignore

table_name = "MyTable"
org = "myOrg"

k = {}
df = pd.read_sql(
f"SELECT NameStrNotQuoted, FieldTypeName, SizeStr, Precision, Scale FROM dbo.vw_cx_meta WHERE [Table] = '{table_name}' and Organization='{org}' AND ETL_Active = 1",
engine,
)
for row in df.itertuples(index=False):
if row.FieldTypeName == "int":
k.update({row.NameStrNotQuoted:Column(int,Check(lambda x: pd.Series([x.fillna(0)],dtype='Int64')),coerce=True, nullable=True)})
elif row.FieldTypeName == 'bit':
k.update({row.NameStrNotQuoted:Column(pa.Bool, coerce=True)})
sch = DataFrameSchema(k)

sch.validate(d)
return k
< /code>
Die Fehler: < /p>
ValueError: cannot convert float NaN to integer
.
.
.
File "/usr/local/lib/python3.8/site-packages/pandera/schemas.py", line 1789, in coerce_dtype
raise errors.SchemaError(
pandera.errors.SchemaError: Error while coercing 'CopySourceID' to type int64: Could not coerce  data_container into type int64:
Ich bin mir von Pandas 'Gotcha' mit Nulls in int -Spalten bewusst und habe jede Permutation der Lambda -Funktion von Check ausprobiert, um dies zu lösen. Jede Hilfe wäre geschätzt, danke.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post