Session.read_pandas(dataframe, /, *, table_name, keys=frozenset({}), partitioning=None, types={}, default_values={}, **kwargs)#

Read a pandas DataFrame into a table.

All the named indices of the DataFrame are included into the table. Multilevel columns are flattened into a single string name.

  • dataframe (DataFrame) – The DataFrame to load.

  • table_name (str) – The name of the table to create.

  • keys (Set[str] | Sequence[str]) –

    The columns that will become keys of the table.

    If a Set is given, the keys will be ordered as the table columns.

  • partitioning (str | None) –

    The description of how the data will be split across partitions of the table.

    Default rules:

    • Only non-joined tables are automatically partitioned.

    • Tables are automatically partitioned by hashing their key columns. If there are no key columns, all the dictionarized columns are hashed.

    • Joined tables can only use a sub-partitioning of the table referencing them.

    • Automatic partitioning is done modulo the number of available cores.


    hash4(country) splits the data across 4 partitions based on the country column’s hash value.

  • types (Mapping[str, DataType]) – Types for some or all columns of the table. Types for non specified columns will be inferred from pandas dtypes.

  • default_values (Mapping[str, ConstantValue | None]) – Mapping from column name to column default_value.

Return type:



>>> dataframe = pd.DataFrame(
...     columns=["Product", "Price"],
...     data=[
...         ("phone", 600.0),
...         ("headset", 80.0),
...         ("watch", 250.0),
...     ],
... )
>>> table = session.read_pandas(
...     dataframe, keys={"Product"}, table_name="Pandas"
... )
>>> table.head().sort_index()
headset   80.0
phone    600.0
watch    250.0