Schematyp mit Polars Scan/Sink erzwingenPython

Python-Programme
Guest
 Schematyp mit Polars Scan/Sink erzwingen

Post by Guest »

Ich habe eine große Anzahl von CSV-Dateien (~100.000), von denen einige selbst große CSV-Dateien sind (d. h. >128 GB), und ich versuche, sie in Parquet-Dateien zu konvertieren. Die Dateien enthalten eine Mischung aus Zeichen-, Zahlen- und Datumsdaten, die im CSV-Format gespeichert sind.
Ich habe aus zwei Gründen ein Problem beim Konvertieren: 1) wenn der Scan/Sink-Aufruf funktioniert Dateien sind etwa zehnmal so groß wie ihre CSV-Versionen; 2) Der Aufruf schlägt häufig fehl, weil das Vorhersageschema die Datentypen nicht ableiten kann.
Meine Frage lautet also: Wie kann ich den Scan/Sink-Aufruf dazu zwingen, nur Zeichendatentypen zu erstellen?
Mein Code lautet wie folgt:

Code: Select all

import os
import polars as pl

dir_list = os.listdir()

for filename in dir_list:
if ".txt" in filename: pl.scan_csv(filename,separator="|").sink_parquet(filename.replace(".txt",".parquet"),type_coercion=False,compression="zstd",compression_level=11)
Wenn dies ausgeführt wird und auf eine Spalte stößt, die ursprünglich wie ein Datentyp für einen Stapel aussieht, wird dieser Datentyp abgeleitet. Wenn der nächste Stapel jedoch etwas Inkonsistentes enthält, wird ein Fehler ausgegeben.
Angesichts der Dateigrößen kann ich nicht garantieren, dass jede Spalte immer denselben Datentyp hat. Daher möchte ich erzwingen, dass der Datentyp jeder Spalte ein Zeichen ist, und mich dann später mit problematischen Spalten befassen/zu numerischen/Datumstypen wechseln. Wie mache ich das?
Danke für jede Hilfe.
Grüße,
James

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post