Zum Inhalt springen

Import aus Pandas

CREATE TABLE ... AS und INSERT INTO können verwendet werden, um eine Tabelle aus einer beliebigen Abfrage zu erstellen. Anschließend können Sie Tabellen anlegen oder in bestehende Tabellen einfügen, indem Sie das Pandas-DataFrame in der Abfrage referenzieren. Die DataFrames müssen nicht manuell registriert werden – DuckDB findet sie im Python-Prozess anhand des Namens dank Replacement Scans.

import duckdb
import pandas
# Create a Pandas dataframe
my_df = pandas.DataFrame.from_dict({'a': [42]})
# create the table "my_table" from the DataFrame "my_df"
# Note: duckdb.sql connects to the default in-memory database connection
duckdb.sql("CREATE TABLE my_table AS SELECT * FROM my_df")
# insert into the table "my_table" from the DataFrame "my_df"
duckdb.sql("INSERT INTO my_table SELECT * FROM my_df")

Wenn die Spaltenreihenfolge abweicht oder nicht alle Spalten im DataFrame vorhanden sind, verwenden Sie INSERT INTO ... BY NAME:

duckdb.sql("INSERT INTO my_table BY NAME SELECT * FROM my_df")

Alternativ hängt die Methode append ein DataFrame direkt an eine bestehende Tabelle an, ohne eine SQL-Abfrage zu schreiben. Übergeben Sie by_name=True, um Spalten nach Name statt nach Position zuzuordnen:

con = duckdb.connect()
con.sql("CREATE TABLE my_table (a INTEGER)")
con.append("my_table", my_df)

Siehe auch

DuckDB unterstützt auch den Export nach Pandas.