Pandas is a fast, powerful, flexible, and easy-to-use open-source data analysis and manipulation tool, built on top of the Python programming language. The QuestDB Python client provides native support for ingesting Pandas dataframes via the InfluxDB Line Protocol (ILP).



The QuestDB Python client implements the dataframe() method to transform Pandas DataFrames into QuestDB-flavored ILP messages.

The following example shows how to insert data from a Pandas DataFrame to the trades table:

from questdb.ingress import Sender, IngressError
import sys
import pandas as pd
def example(host: str = 'localhost', port: int = 9009):
df = pd.DataFrame({
'pair': ['USDGBP', 'EURJPY'],
'traded_price': [0.83, 142.62],
'qty': [100, 400],
'limit_price': [0.84, None],
'timestamp': [
pd.Timestamp('2022-08-06 07:35:23.189062', tz='UTC'),
pd.Timestamp('2022-08-06 07:35:23.189062', tz='UTC')]})
with Sender(host, port) as sender:
table_name='trades', # Table name to insert into.
symbols=['pair'], # Columns to be inserted as SYMBOL types.
at='timestamp') # Column containing the designated timestamps.
except IngressError as e:
sys.stderr.write(f'Got error: {e}\n')
if __name__ == '__main__':

See also#

For detailed documentation, please see: