{"library":"pandas-gbq","title":"pandas-gbq","description":"pandas-gbq is a Python library that provides a convenient interface to connect pandas DataFrames with Google BigQuery. It simplifies reading data from BigQuery into a pandas.DataFrame and writing DataFrames to BigQuery tables. The current version is 0.34.1, released on 2026-03-26, and the library maintains a regular release cadence, typically with monthly or bi-monthly updates for new features and bug fixes.","language":"python","status":"active","last_verified":"Tue May 19","install":{"commands":["pip install pandas-gbq"],"cli":null},"imports":["import pandas_gbq\ndf = pandas_gbq.read_gbq(query, project_id=project_id)","import pandas_gbq\npandas_gbq.to_gbq(df, destination_table, project_id=project_id)","import pandas_gbq"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nimport pandas as pd\nimport pandas_gbq\n\n# Set your Google Cloud Project ID\n# It's recommended to set this as an environment variable or via credentials\nproject_id = os.environ.get('GOOGLE_CLOUD_PROJECT', 'your-gcp-project-id')\n\n# --- Reading data from BigQuery ---\n# Example query from a public dataset\nsql_query = \"\"\"\n    SELECT country_name, alpha_2_code\n    FROM `bigquery-public-data.utility_us.country_code_iso`\n    WHERE alpha_2_code LIKE 'U%'\n    LIMIT 5\n\"\"\"\n\ntry:\n    df_read = pandas_gbq.read_gbq(sql_query, project_id=project_id)\n    print(\"\\n--- Data read from BigQuery ---\")\n    print(df_read)\nexcept Exception as e:\n    print(f\"Error reading from BigQuery: {e}\")\n    print(\"Please ensure GOOGLE_CLOUD_PROJECT is set and you have authenticated (e.g., `gcloud auth application-default login`).\")\n\n# --- Writing data to BigQuery ---\n# Create a sample DataFrame to upload\ndata = {\n    'col1': [1, 2, 3],\n    'col2': ['A', 'B', 'C'],\n    'timestamp_col': pd.to_datetime(['2026-01-01', '2026-01-02', '2026-01-03'])\n}\ndf_write = pd.DataFrame(data)\n\n# Define destination table (dataset.tablename)\ndestination_table = 'my_test_dataset.my_test_table'\n\n# To avoid errors, you might want to replace the table if it exists for testing\n# In production, consider 'append' or 'fail' with proper checks\ntry:\n    pandas_gbq.to_gbq(\n        df_write,\n        destination_table,\n        project_id=project_id,\n        if_exists='replace' # Options: 'fail', 'replace', 'append'\n    )\n    print(f\"\\n--- DataFrame successfully written to {destination_table} in project {project_id} ---\")\nexcept Exception as e:\n    print(f\"Error writing to BigQuery: {e}\")\n    print(\"Ensure 'my_test_dataset' exists in BigQuery or remove 'my_test_dataset.' from 'destination_table' to allow automatic dataset creation if permitted.\")\n","lang":"python","description":"This quickstart demonstrates how to read data from a public BigQuery dataset into a pandas DataFrame and write a pandas DataFrame to a new BigQuery table. It assumes you have a Google Cloud project set up and have authenticated (e.g., using `gcloud auth application-default login`). The `project_id` is retrieved from the `GOOGLE_CLOUD_PROJECT` environment variable for robustness.","tag":"reviewed","tag_description":"minor failures on some runtimes or slightly older test data","last_tested":"2026-04-24","results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":-1},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]},"compatibility":{"tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","last_tested":"2026-05-19","installed_version":"0.34.1","pypi_latest":"0.35.0","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":15.2,"avg_import_s":3.13,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pandas-gbq","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":3.16,"mem_mb":51.3,"disk_size":"396.7M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pandas-gbq","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":2.91,"mem_mb":51.3,"disk_size":"396.7M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pandas-gbq","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":2.57,"mem_mb":50.9,"disk_size":"390.1M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pandas-gbq","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":null,"install_time_s":15,"import_time_s":2.04,"mem_mb":50,"disk_size":"362M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pandas-gbq","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":15.4,"import_time_s":2.04,"mem_mb":50,"disk_size":"362M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pandas-gbq","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.86,"mem_mb":49.6,"disk_size":"357M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pandas-gbq","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":3.71,"mem_mb":57.7,"disk_size":"424.0M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pandas-gbq","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":3.73,"mem_mb":57.7,"disk_size":"424.0M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pandas-gbq","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":4.5,"mem_mb":57.4,"disk_size":"417.3M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pandas-gbq","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":null,"install_time_s":14.4,"import_time_s":2.91,"mem_mb":56.5,"disk_size":"389M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pandas-gbq","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":14.5,"import_time_s":3.03,"mem_mb":56.5,"disk_size":"389M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pandas-gbq","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":2.9,"mem_mb":56.2,"disk_size":"383M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pandas-gbq","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":3.78,"mem_mb":56.5,"disk_size":"416.8M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pandas-gbq","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":3.68,"mem_mb":56.5,"disk_size":"416.8M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pandas-gbq","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":4.6,"mem_mb":56.3,"disk_size":"410.1M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pandas-gbq","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":null,"install_time_s":14.7,"import_time_s":3.35,"mem_mb":55.3,"disk_size":"382M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pandas-gbq","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":14.1,"import_time_s":3.33,"mem_mb":55.4,"disk_size":"382M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pandas-gbq","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":3.72,"mem_mb":55.1,"disk_size":"376M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pandas-gbq","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":3.52,"mem_mb":56.6,"disk_size":"415.9M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pandas-gbq","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":3.34,"mem_mb":56.6,"disk_size":"415.9M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pandas-gbq","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":4.29,"mem_mb":56.3,"disk_size":"409.1M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pandas-gbq","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":null,"install_time_s":13.9,"import_time_s":3.02,"mem_mb":55.3,"disk_size":"381M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pandas-gbq","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":14,"import_time_s":3.05,"mem_mb":55.3,"disk_size":"381M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pandas-gbq","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":4.31,"mem_mb":55.1,"disk_size":"375M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pandas-gbq","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":2.56,"mem_mb":51.7,"disk_size":"386.3M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pandas-gbq","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":2.52,"mem_mb":51.7,"disk_size":"386.3M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pandas-gbq","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":2.43,"mem_mb":51.5,"disk_size":"385.0M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pandas-gbq","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":null,"install_time_s":17.9,"import_time_s":2.41,"mem_mb":50.4,"disk_size":"361M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pandas-gbq","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":18.2,"import_time_s":2.42,"mem_mb":50.4,"disk_size":"361M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pandas-gbq","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":2.11,"mem_mb":50.3,"disk_size":"359M"}]}}