| |
| <!DOCTYPE html> |
| |
| |
| <html lang="en" data-content_root="../" > |
| |
| <head> |
| <meta charset="utf-8" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> |
| |
| <title>Extending PyArrow — Apache Arrow v22.0.0</title> |
| |
| |
| |
| <script data-cfasync="false"> |
| document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; |
| document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; |
| </script> |
| <!-- |
| this give us a css class that will be invisible only if js is disabled |
| --> |
| <noscript> |
| <style> |
| .pst-js-only { display: none !important; } |
| |
| </style> |
| </noscript> |
| |
| <!-- Loaded before other Sphinx assets --> |
| <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> |
| <link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> |
| |
| <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=03e43079" /> |
| <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" /> |
| <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> |
| <link rel="stylesheet" type="text/css" href="../_static/theme_overrides.css?v=8dcd28dc" /> |
| |
| <!-- So that users can add custom icons --> |
| <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> |
| <!-- Pre-loaded scripts that we'll load fully later --> |
| <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> |
| <link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> |
| |
| <script src="../_static/documentation_options.js?v=687e4bc6"></script> |
| <script src="../_static/doctools.js?v=9bcbadda"></script> |
| <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> |
| <script src="../_static/clipboard.min.js?v=a7894cd8"></script> |
| <script src="../_static/copybutton.js?v=3bb21c8c"></script> |
| <script src="../_static/design-tabs.js?v=f930bc37"></script> |
| <script>DOCUMENTATION_OPTIONS.pagename = 'python/extending_types';</script> |
| <script> |
| DOCUMENTATION_OPTIONS.theme_version = '0.16.1'; |
| DOCUMENTATION_OPTIONS.theme_switcher_json_url = '/docs/_static/versions.json'; |
| DOCUMENTATION_OPTIONS.theme_switcher_version_match = ''; |
| DOCUMENTATION_OPTIONS.show_version_warning_banner = |
| false; |
| </script> |
| <link rel="canonical" href="https://arrow.apache.org/docs/python/extending_types.html" /> |
| <link rel="icon" href="../_static/favicon.ico"/> |
| <link rel="index" title="Index" href="../genindex.html" /> |
| <link rel="search" title="Search" href="../search.html" /> |
| <link rel="next" title="PyArrow Integrations" href="integration.html" /> |
| <link rel="prev" title="Arrow Flight RPC" href="flight.html" /> |
| |
| <meta name="viewport" content="width=device-width, initial-scale=1"/> |
| <meta name="docsearch:language" content="en"/> |
| <meta name="docsearch:version" content="22.0.0" /> |
| |
| <!-- Matomo --> |
| <script> |
| var _paq = window._paq = window._paq || []; |
| /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ |
| /* We explicitly disable cookie tracking to avoid privacy issues */ |
| _paq.push(['disableCookies']); |
| _paq.push(['trackPageView']); |
| _paq.push(['enableLinkTracking']); |
| (function() { |
| var u="https://analytics.apache.org/"; |
| _paq.push(['setTrackerUrl', u+'matomo.php']); |
| _paq.push(['setSiteId', '20']); |
| var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; |
| g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); |
| })(); |
| </script> |
| <!-- End Matomo Code --> |
| |
| </head> |
| |
| |
| <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> |
| |
| |
| |
| <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> |
| |
| <div id="pst-scroll-pixel-helper"></div> |
| |
| <button type="button" class="btn rounded-pill" id="pst-back-to-top"> |
| <i class="fa-solid fa-arrow-up"></i>Back to top</button> |
| |
| |
| <dialog id="pst-search-dialog"> |
| |
| <form class="bd-search d-flex align-items-center" |
| action="../search.html" |
| method="get"> |
| <i class="fa-solid fa-magnifying-glass"></i> |
| <input type="search" |
| class="form-control" |
| name="q" |
| placeholder="Search the docs ..." |
| aria-label="Search the docs ..." |
| autocomplete="off" |
| autocorrect="off" |
| autocapitalize="off" |
| spellcheck="false"/> |
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> |
| </form> |
| </dialog> |
| |
| <div class="pst-async-banner-revealer d-none"> |
| <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> |
| </div> |
| |
| |
| <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> |
| <div class="bd-header__inner bd-page-width"> |
| <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> |
| <span class="fa-solid fa-bars"></span> |
| </button> |
| |
| |
| <div class=" navbar-header-items__start"> |
| |
| <div class="navbar-item"> |
| |
| |
| |
| |
| |
| <a class="navbar-brand logo" href="../index.html"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <img src="../_static/arrow.png" class="logo__image only-light" alt="Apache Arrow v22.0.0 - Home"/> |
| <img src="../_static/arrow-dark.png" class="logo__image only-dark pst-js-only" alt="Apache Arrow v22.0.0 - Home"/> |
| |
| |
| </a></div> |
| |
| </div> |
| |
| <div class=" navbar-header-items"> |
| |
| <div class="me-auto navbar-header-items__center"> |
| |
| <div class="navbar-item"> |
| <nav> |
| <ul class="bd-navbar-elements navbar-nav"> |
| |
| <li class="nav-item "> |
| <a class="nav-link nav-internal" href="../format/index.html"> |
| Specifications |
| </a> |
| </li> |
| |
| |
| <li class="nav-item "> |
| <a class="nav-link nav-internal" href="../developers/index.html"> |
| Development |
| </a> |
| </li> |
| |
| |
| <li class="nav-item current active"> |
| <a class="nav-link nav-internal" href="../implementations.html"> |
| Implementations |
| </a> |
| </li> |
| |
| </ul> |
| </nav></div> |
| |
| </div> |
| |
| |
| <div class="navbar-header-items__end"> |
| |
| <div class="navbar-item navbar-persistent--container"> |
| |
| |
| <button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> |
| <i class="fa-solid fa-magnifying-glass"></i> |
| <span class="search-button__default-text">Search</span> |
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> |
| </button> |
| </div> |
| |
| |
| <div class="navbar-item"><div class="kapa-ai-bot"> |
| <script |
| async |
| src="https://widget.kapa.ai/kapa-widget.bundle.js" |
| data-website-id="9db461d5-ac77-4b3f-a5c5-75efa78339d2" |
| data-project-name="Apache Arrow" |
| data-project-color="#000000" |
| data-project-logo="https://arrow.apache.org/img/arrow-logo_chevrons_white-txt_black-bg.png" |
| data-modal-disclaimer="This is a custom LLM with access to all [Arrow documentation](https://arrow.apache.org/docs/). Please include the language you are using in your question, e.g., Python, C++, Java, R, etc." |
| data-consent-required="true" |
| data-user-analytics-cookie-enabled="false" |
| data-consent-screen-disclaimer="By clicking "I agree, let's chat", you consent to the use of the AI assistant in accordance with kapa.ai's [Privacy Policy](https://www.kapa.ai/content/privacy-policy). This service uses reCAPTCHA, which requires your consent to Google's [Privacy Policy](https://policies.google.com/privacy) and [Terms of Service](https://policies.google.com/terms). By proceeding, you explicitly agree to both kapa.ai's and Google's privacy policies." |
| ></script> |
| |
| </div> |
| |
| </div> |
| |
| <div class="navbar-item"> |
| <div class="version-switcher__container dropdown pst-js-only"> |
| <button id="pst-version-switcher-button-2" |
| type="button" |
| class="version-switcher__button btn btn-sm dropdown-toggle" |
| data-bs-toggle="dropdown" |
| aria-haspopup="listbox" |
| aria-controls="pst-version-switcher-list-2" |
| aria-label="Version switcher list" |
| > |
| Choose version <!-- this text may get changed later by javascript --> |
| <span class="caret"></span> |
| </button> |
| <div id="pst-version-switcher-list-2" |
| class="version-switcher__menu dropdown-menu list-group-flush py-0" |
| role="listbox" aria-labelledby="pst-version-switcher-button-2"> |
| <!-- dropdown will be populated by javascript on page load --> |
| </div> |
| </div></div> |
| |
| <div class="navbar-item"> |
| |
| <button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> |
| <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> |
| <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> |
| <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> |
| </button></div> |
| |
| <div class="navbar-item"><ul class="navbar-icon-links" |
| aria-label="Icon Links"> |
| <li class="nav-item"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="https://github.com/apache/arrow" title="GitHub" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i> |
| <span class="sr-only">GitHub</span></a> |
| </li> |
| <li class="nav-item"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="https://www.linkedin.com/company/apache-arrow/" title="LinkedIn" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-linkedin fa-lg" aria-hidden="true"></i> |
| <span class="sr-only">LinkedIn</span></a> |
| </li> |
| <li class="nav-item"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="https://bsky.app/profile/arrow.apache.org" title="BlueSky" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-bluesky fa-lg" aria-hidden="true"></i> |
| <span class="sr-only">BlueSky</span></a> |
| </li> |
| </ul></div> |
| |
| </div> |
| |
| </div> |
| |
| |
| <div class="navbar-persistent--mobile"> |
| |
| <button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> |
| <i class="fa-solid fa-magnifying-glass"></i> |
| <span class="search-button__default-text">Search</span> |
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> |
| </button> |
| </div> |
| |
| |
| |
| <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> |
| <span class="fa-solid fa-outdent"></span> |
| </button> |
| |
| </div> |
| |
| </header> |
| |
| |
| <div class="bd-container"> |
| <div class="bd-container__inner bd-page-width"> |
| |
| |
| |
| <dialog id="pst-primary-sidebar-modal"></dialog> |
| <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> |
| |
| |
| |
| <div class="sidebar-header-items sidebar-primary__section"> |
| |
| |
| <div class="sidebar-header-items__center"> |
| |
| |
| |
| <div class="navbar-item"> |
| <nav> |
| <ul class="bd-navbar-elements navbar-nav"> |
| |
| <li class="nav-item "> |
| <a class="nav-link nav-internal" href="../format/index.html"> |
| Specifications |
| </a> |
| </li> |
| |
| |
| <li class="nav-item "> |
| <a class="nav-link nav-internal" href="../developers/index.html"> |
| Development |
| </a> |
| </li> |
| |
| |
| <li class="nav-item current active"> |
| <a class="nav-link nav-internal" href="../implementations.html"> |
| Implementations |
| </a> |
| </li> |
| |
| </ul> |
| </nav></div> |
| |
| |
| </div> |
| |
| |
| |
| <div class="sidebar-header-items__end"> |
| |
| <div class="navbar-item"><div class="kapa-ai-bot"> |
| <script |
| async |
| src="https://widget.kapa.ai/kapa-widget.bundle.js" |
| data-website-id="9db461d5-ac77-4b3f-a5c5-75efa78339d2" |
| data-project-name="Apache Arrow" |
| data-project-color="#000000" |
| data-project-logo="https://arrow.apache.org/img/arrow-logo_chevrons_white-txt_black-bg.png" |
| data-modal-disclaimer="This is a custom LLM with access to all [Arrow documentation](https://arrow.apache.org/docs/). Please include the language you are using in your question, e.g., Python, C++, Java, R, etc." |
| data-consent-required="true" |
| data-user-analytics-cookie-enabled="false" |
| data-consent-screen-disclaimer="By clicking "I agree, let's chat", you consent to the use of the AI assistant in accordance with kapa.ai's [Privacy Policy](https://www.kapa.ai/content/privacy-policy). This service uses reCAPTCHA, which requires your consent to Google's [Privacy Policy](https://policies.google.com/privacy) and [Terms of Service](https://policies.google.com/terms). By proceeding, you explicitly agree to both kapa.ai's and Google's privacy policies." |
| ></script> |
| |
| </div> |
| |
| </div> |
| |
| <div class="navbar-item"> |
| <div class="version-switcher__container dropdown pst-js-only"> |
| <button id="pst-version-switcher-button-3" |
| type="button" |
| class="version-switcher__button btn btn-sm dropdown-toggle" |
| data-bs-toggle="dropdown" |
| aria-haspopup="listbox" |
| aria-controls="pst-version-switcher-list-3" |
| aria-label="Version switcher list" |
| > |
| Choose version <!-- this text may get changed later by javascript --> |
| <span class="caret"></span> |
| </button> |
| <div id="pst-version-switcher-list-3" |
| class="version-switcher__menu dropdown-menu list-group-flush py-0" |
| role="listbox" aria-labelledby="pst-version-switcher-button-3"> |
| <!-- dropdown will be populated by javascript on page load --> |
| </div> |
| </div></div> |
| |
| <div class="navbar-item"> |
| |
| <button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> |
| <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> |
| <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> |
| <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> |
| </button></div> |
| |
| <div class="navbar-item"><ul class="navbar-icon-links" |
| aria-label="Icon Links"> |
| <li class="nav-item"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="https://github.com/apache/arrow" title="GitHub" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i> |
| <span class="sr-only">GitHub</span></a> |
| </li> |
| <li class="nav-item"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="https://www.linkedin.com/company/apache-arrow/" title="LinkedIn" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-linkedin fa-lg" aria-hidden="true"></i> |
| <span class="sr-only">LinkedIn</span></a> |
| </li> |
| <li class="nav-item"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href="https://bsky.app/profile/arrow.apache.org" title="BlueSky" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-bluesky fa-lg" aria-hidden="true"></i> |
| <span class="sr-only">BlueSky</span></a> |
| </li> |
| </ul></div> |
| |
| </div> |
| |
| </div> |
| |
| <div class="sidebar-primary-items__start sidebar-primary__section"> |
| <div class="sidebar-primary-item"> |
| <nav class="bd-docs-nav bd-links" |
| aria-label="Section Navigation"> |
| <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> |
| <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> |
| <li class="toctree-l1"><a class="reference external" href="https://arrow.apache.org/dotnet/">.NET</a></li> |
| <li class="toctree-l1 has-children"><a class="reference internal" href="../cpp/index.html">C++</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l2 has-children"><a class="reference internal" href="../cpp/getting_started.html">Getting Started</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/build_system.html">Using Arrow C++ in your own project</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/conventions.html">Conventions</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/tutorials/basic_arrow.html">Basic Arrow Data Structures</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/tutorials/io_tutorial.html">Arrow File I/O</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/tutorials/compute_tutorial.html">Arrow Compute</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/tutorials/datasets_tutorial.html">Arrow Datasets</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l2 has-children"><a class="reference internal" href="../cpp/user_guide.html">User Guide</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/overview.html">High-Level Overview</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/memory.html">Memory Management</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/arrays.html">Arrays</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/datatypes.html">Data Types</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/tables.html">Tabular Data</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/compute.html">Compute Functions</a></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="../cpp/gandiva.html">The Gandiva Expression Compiler</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="../cpp/gandiva/expr_projector_filter.html">Gandiva Expression, Projector, and Filter</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="../cpp/gandiva/external_func.html">Gandiva External Functions Development Guide</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="../cpp/acero.html">Acero: A C++ streaming execution engine</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="../cpp/acero/overview.html">Acero Overview</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="../cpp/acero/user_guide.html">Acero User’s Guide</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="../cpp/acero/substrait.html">Using Acero with Substrait</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/io.html">Input / output and filesystems</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/ipc.html">Reading and writing the Arrow IPC format</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/orc.html">Reading and Writing ORC files</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/parquet.html">Reading and writing Parquet files</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/csv.html">Reading and Writing CSV files</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/json.html">Reading JSON files</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/dataset.html">Tabular Datasets</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/flight.html">Arrow Flight RPC</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/gdb.html">Debugging code using Arrow</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/threading.html">Thread Management</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/opentelemetry.html">OpenTelemetry</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/env_vars.html">Environment Variables</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l2 has-children"><a class="reference internal" href="../cpp/examples/index.html">Examples</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/examples/cmake_minimal_build.html">Minimal build using CMake</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/examples/compute_and_write_example.html">Compute and Write CSV Example</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/examples/dataset_documentation_example.html">Arrow Datasets example</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/examples/parquet_column_encryption.html">Parquet column encryption</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/examples/row_columnar_conversion.html">Row to columnar conversion</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/examples/tuple_range_conversion.html">std::tuple-like ranges to Arrow</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/examples/converting_recordbatch_to_tensor.html">Converting RecordBatch to Tensor</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l2 has-children"><a class="reference internal" href="../cpp/api.html">API Reference</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/support.html">Programming Support</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/memory.html">Memory (management)</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/thread.html">Thread (management)</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/datatype.html">Data Types</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/array.html">Arrays</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/extension.html">Extension</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/scalar.html">Scalars</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/builder.html">Array Builders</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/table.html">Two-dimensional Datasets</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/c_abi.html">C Interfaces</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/compute.html">Compute Functions</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/acero.html">Streaming Execution (Acero)</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/gandiva.html">Gandiva Expression Compiler</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/tensor.html">Tensors</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/utilities.html">Utilities</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/async.html">Asynchronous programming</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/io.html">Input / output</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/ipc.html">Arrow IPC</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/formats.html">File Formats</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/cuda.html">CUDA support</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/flight.html">Arrow Flight RPC</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/flightsql.html">Arrow Flight SQL</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/filesystem.html">Filesystems</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../cpp/api/dataset.html">Dataset</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l2 has-children"><a class="reference internal" href="../developers/cpp/index.html">C++ Development</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l3"><a class="reference internal" href="../developers/cpp/building.html">Building Arrow C++</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../developers/cpp/development.html">Development Guidelines</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../developers/cpp/windows.html">Developing on Windows</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../developers/cpp/emscripten.html">Cross compiling for WebAssembly with Emscripten</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../developers/cpp/conventions.html">Conventions</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../developers/cpp/fuzzing.html">Fuzzing Arrow C++</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="../developers/cpp/compute.html">Developing Arrow C++ Compute</a></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="../developers/cpp/acero.html">Developing Acero</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="../developers/cpp/acero/swiss_table.html">Swiss Table</a></li> |
| </ul> |
| </details></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l2"><a class="reference external" href="https://arrow.apache.org/cookbook/cpp/">C++ Cookbook</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l1 has-children"><a class="reference internal" href="../c_glib/index.html">C GLib</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l2"><a class="reference internal" href="../c_glib/arrow-glib/index.html">Apache Arrow GLib</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../c_glib/arrow-cuda-glib/index.html">Apache Arrow CUDA GLib</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../c_glib/arrow-dataset-glib/index.html">Apache Arrow Dataset</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../c_glib/arrow-flight-glib/index.html">Apache Arrow Flight GLib</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../c_glib/arrow-flight-sql-glib/index.html">Apache Arrow Flight SQL GLib</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../c_glib/parquet-glib/index.html">Apache Parquet GLib</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../c_glib/gandiva-glib/index.html">Gandiva GLib</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l1"><a class="reference external" href="https://arrow.apache.org/go/">Go</a></li> |
| <li class="toctree-l1 has-children"><a class="reference internal" href="../java/index.html">Java</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l2"><a class="reference internal" href="../java/quickstartguide.html">Quick Start Guide</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/overview.html">High-Level Overview</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/install.html">Installing Java Modules</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/memory.html">Memory Management</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/vector.html">ValueVector</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/vector_schema_root.html">Tabular Data</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/table.html">Table</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/ipc.html">Reading/Writing IPC formats</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/algorithm.html">Java Algorithms</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/flight.html">Arrow Flight RPC</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/flight_sql.html">Arrow Flight SQL</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/flight_sql_jdbc_driver.html">Arrow Flight SQL JDBC Driver</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/dataset.html">Dataset</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/substrait.html">Substrait</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/cdata.html">C Data Interface</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/jdbc.html">Arrow JDBC Adapter</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="../java/reference/index.html">Reference (javadoc)</a></li> |
| <li class="toctree-l2"><a class="reference external" href="https://arrow.apache.org/cookbook/java/">Java cookbook</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l1"><a class="reference external" href="https://arrow.apache.org/js/current/">JavaScript</a></li> |
| <li class="toctree-l1"><a class="reference external" href="https://arrow.apache.org/julia/">Julia</a></li> |
| <li class="toctree-l1"><a class="reference external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">MATLAB</a></li> |
| <li class="toctree-l1 current active has-children"><a class="reference internal" href="index.html">Python</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> |
| <li class="toctree-l2"><a class="reference internal" href="install.html">Installing PyArrow</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="getstarted.html">Getting Started</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="data.html">Data Types and In-Memory Data Model</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="compute.html">Compute Functions</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="memory.html">Memory and IO Interfaces</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="ipc.html">Streaming, Serialization, and IPC</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="filesystems.html">Filesystem Interface</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="numpy.html">NumPy Integration</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="pandas.html">Pandas Integration</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="interchange_protocol.html">Dataframe Interchange Protocol</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="dlpack.html">The DLPack Protocol</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="timestamps.html">Timestamps</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="orc.html">Reading and Writing the Apache ORC Format</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="csv.html">Reading and Writing CSV files</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="feather.html">Feather File Format</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="json.html">Reading JSON files</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="parquet.html">Reading and Writing the Apache Parquet Format</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="dataset.html">Tabular Datasets</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="flight.html">Arrow Flight RPC</a></li> |
| <li class="toctree-l2 current active"><a class="current reference internal" href="#">Extending PyArrow</a></li> |
| <li class="toctree-l2 has-children"><a class="reference internal" href="integration.html">PyArrow Integrations</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l3"><a class="reference internal" href="integration/substrait.html">Substrait</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="integration/python_r.html">Integrating PyArrow with R</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="integration/python_java.html">Integrating PyArrow with Java</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="integration/extending.html">Using pyarrow from C++ and Cython Code</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="integration/cuda.html">CUDA Integration</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l2"><a class="reference internal" href="env_vars.html">Environment Variables</a></li> |
| <li class="toctree-l2 has-children"><a class="reference internal" href="api.html">API Reference</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="api/datatypes.html">Data Types and Schemas</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.null.html">pyarrow.null</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.bool_.html">pyarrow.bool_</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.int8.html">pyarrow.int8</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.int16.html">pyarrow.int16</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.int32.html">pyarrow.int32</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.int64.html">pyarrow.int64</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.uint8.html">pyarrow.uint8</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.uint16.html">pyarrow.uint16</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.uint32.html">pyarrow.uint32</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.uint64.html">pyarrow.uint64</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.float16.html">pyarrow.float16</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.float32.html">pyarrow.float32</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.float64.html">pyarrow.float64</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.time32.html">pyarrow.time32</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.time64.html">pyarrow.time64</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.timestamp.html">pyarrow.timestamp</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.date32.html">pyarrow.date32</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.date64.html">pyarrow.date64</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.duration.html">pyarrow.duration</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.month_day_nano_interval.html">pyarrow.month_day_nano_interval</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.binary.html">pyarrow.binary</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.string.html">pyarrow.string</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.utf8.html">pyarrow.utf8</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.large_binary.html">pyarrow.large_binary</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.large_string.html">pyarrow.large_string</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.large_utf8.html">pyarrow.large_utf8</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.binary_view.html">pyarrow.binary_view</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.string_view.html">pyarrow.string_view</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.decimal128.html">pyarrow.decimal128</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.decimal256.html">pyarrow.decimal256</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.list_.html">pyarrow.list_</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.large_list.html">pyarrow.large_list</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.list_view.html">pyarrow.list_view</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.large_list_view.html">pyarrow.large_list_view</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.map_.html">pyarrow.map_</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.struct.html">pyarrow.struct</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dictionary.html">pyarrow.dictionary</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.run_end_encoded.html">pyarrow.run_end_encoded</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fixed_shape_tensor.html">pyarrow.fixed_shape_tensor</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.union.html">pyarrow.union</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dense_union.html">pyarrow.dense_union</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.sparse_union.html">pyarrow.sparse_union</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.opaque.html">pyarrow.opaque</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.bool8.html">pyarrow.bool8</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.uuid.html">pyarrow.uuid</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.json_.html">pyarrow.json_</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.field.html">pyarrow.field</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.schema.html">pyarrow.schema</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.from_numpy_dtype.html">pyarrow.from_numpy_dtype</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.unify_schemas.html">pyarrow.unify_schemas</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.DataType.html">pyarrow.DataType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.DictionaryType.html">pyarrow.DictionaryType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ListType.html">pyarrow.ListType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ListViewType.html">pyarrow.ListViewType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.FixedSizeListType.html">pyarrow.FixedSizeListType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.LargeListType.html">pyarrow.LargeListType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.LargeListViewType.html">pyarrow.LargeListViewType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.MapType.html">pyarrow.MapType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.StructType.html">pyarrow.StructType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.UnionType.html">pyarrow.UnionType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.DenseUnionType.html">pyarrow.DenseUnionType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.SparseUnionType.html">pyarrow.SparseUnionType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.TimestampType.html">pyarrow.TimestampType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Time32Type.html">pyarrow.Time32Type</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Time64Type.html">pyarrow.Time64Type</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.DurationType.html">pyarrow.DurationType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.FixedSizeBinaryType.html">pyarrow.FixedSizeBinaryType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Decimal32Type.html">pyarrow.Decimal32Type</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Decimal64Type.html">pyarrow.Decimal64Type</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Decimal128Type.html">pyarrow.Decimal128Type</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Decimal256Type.html">pyarrow.Decimal256Type</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Field.html">pyarrow.Field</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Schema.html">pyarrow.Schema</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.RunEndEncodedType.html">pyarrow.RunEndEncodedType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.BaseExtensionType.html">pyarrow.BaseExtensionType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ExtensionType.html">pyarrow.ExtensionType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.UnknownExtensionType.html">pyarrow.UnknownExtensionType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.register_extension_type.html">pyarrow.register_extension_type</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.unregister_extension_type.html">pyarrow.unregister_extension_type</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.FixedShapeTensorType.html">pyarrow.FixedShapeTensorType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.OpaqueType.html">pyarrow.OpaqueType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.JsonType.html">pyarrow.JsonType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.UuidType.html">pyarrow.UuidType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Bool8Type.html">pyarrow.Bool8Type</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_boolean.html">pyarrow.types.is_boolean</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_integer.html">pyarrow.types.is_integer</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_signed_integer.html">pyarrow.types.is_signed_integer</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_unsigned_integer.html">pyarrow.types.is_unsigned_integer</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_int8.html">pyarrow.types.is_int8</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_int16.html">pyarrow.types.is_int16</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_int32.html">pyarrow.types.is_int32</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_int64.html">pyarrow.types.is_int64</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_uint8.html">pyarrow.types.is_uint8</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_uint16.html">pyarrow.types.is_uint16</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_uint32.html">pyarrow.types.is_uint32</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_uint64.html">pyarrow.types.is_uint64</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_floating.html">pyarrow.types.is_floating</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_float16.html">pyarrow.types.is_float16</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_float32.html">pyarrow.types.is_float32</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_float64.html">pyarrow.types.is_float64</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_decimal.html">pyarrow.types.is_decimal</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_decimal128.html">pyarrow.types.is_decimal128</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_decimal256.html">pyarrow.types.is_decimal256</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_list.html">pyarrow.types.is_list</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_large_list.html">pyarrow.types.is_large_list</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_fixed_size_list.html">pyarrow.types.is_fixed_size_list</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_list_view.html">pyarrow.types.is_list_view</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_large_list_view.html">pyarrow.types.is_large_list_view</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_struct.html">pyarrow.types.is_struct</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_union.html">pyarrow.types.is_union</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_nested.html">pyarrow.types.is_nested</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_run_end_encoded.html">pyarrow.types.is_run_end_encoded</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_temporal.html">pyarrow.types.is_temporal</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_timestamp.html">pyarrow.types.is_timestamp</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_date.html">pyarrow.types.is_date</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_date32.html">pyarrow.types.is_date32</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_date64.html">pyarrow.types.is_date64</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_time.html">pyarrow.types.is_time</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_time32.html">pyarrow.types.is_time32</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_time64.html">pyarrow.types.is_time64</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_duration.html">pyarrow.types.is_duration</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_interval.html">pyarrow.types.is_interval</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_null.html">pyarrow.types.is_null</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_binary.html">pyarrow.types.is_binary</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_unicode.html">pyarrow.types.is_unicode</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_string.html">pyarrow.types.is_string</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_large_binary.html">pyarrow.types.is_large_binary</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_large_unicode.html">pyarrow.types.is_large_unicode</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_large_string.html">pyarrow.types.is_large_string</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_binary_view.html">pyarrow.types.is_binary_view</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_string_view.html">pyarrow.types.is_string_view</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_fixed_size_binary.html">pyarrow.types.is_fixed_size_binary</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_map.html">pyarrow.types.is_map</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_dictionary.html">pyarrow.types.is_dictionary</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.is_primitive.html">pyarrow.types.is_primitive</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.types.TypesEnum.html">pyarrow.types.TypesEnum</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="api/arrays.html">Arrays and Scalars</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.array.html">pyarrow.array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.nulls.html">pyarrow.nulls</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Array.html">pyarrow.Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.BooleanArray.html">pyarrow.BooleanArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.FloatingPointArray.html">pyarrow.FloatingPointArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.IntegerArray.html">pyarrow.IntegerArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Int8Array.html">pyarrow.Int8Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Int16Array.html">pyarrow.Int16Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Int32Array.html">pyarrow.Int32Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Int64Array.html">pyarrow.Int64Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.NullArray.html">pyarrow.NullArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.NumericArray.html">pyarrow.NumericArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.UInt8Array.html">pyarrow.UInt8Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.UInt16Array.html">pyarrow.UInt16Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.UInt32Array.html">pyarrow.UInt32Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.UInt64Array.html">pyarrow.UInt64Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.HalfFloatArray.html">pyarrow.HalfFloatArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.FloatArray.html">pyarrow.FloatArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.DoubleArray.html">pyarrow.DoubleArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.BinaryArray.html">pyarrow.BinaryArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.StringArray.html">pyarrow.StringArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.FixedSizeBinaryArray.html">pyarrow.FixedSizeBinaryArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.LargeBinaryArray.html">pyarrow.LargeBinaryArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.LargeStringArray.html">pyarrow.LargeStringArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.BinaryViewArray.html">pyarrow.BinaryViewArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.StringViewArray.html">pyarrow.StringViewArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Time32Array.html">pyarrow.Time32Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Time64Array.html">pyarrow.Time64Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Date32Array.html">pyarrow.Date32Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Date64Array.html">pyarrow.Date64Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.TimestampArray.html">pyarrow.TimestampArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.DurationArray.html">pyarrow.DurationArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.MonthDayNanoIntervalArray.html">pyarrow.MonthDayNanoIntervalArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Decimal32Array.html">pyarrow.Decimal32Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Decimal64Array.html">pyarrow.Decimal64Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Decimal128Array.html">pyarrow.Decimal128Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Decimal256Array.html">pyarrow.Decimal256Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.DictionaryArray.html">pyarrow.DictionaryArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ListArray.html">pyarrow.ListArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.FixedSizeListArray.html">pyarrow.FixedSizeListArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.LargeListArray.html">pyarrow.LargeListArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ListViewArray.html">pyarrow.ListViewArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.LargeListViewArray.html">pyarrow.LargeListViewArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.MapArray.html">pyarrow.MapArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.RunEndEncodedArray.html">pyarrow.RunEndEncodedArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.StructArray.html">pyarrow.StructArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.UnionArray.html">pyarrow.UnionArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ExtensionArray.html">pyarrow.ExtensionArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.FixedShapeTensorArray.html">pyarrow.FixedShapeTensorArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.OpaqueArray.html">pyarrow.OpaqueArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.JsonArray.html">pyarrow.JsonArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.UuidArray.html">pyarrow.UuidArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Bool8Array.html">pyarrow.Bool8Array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.scalar.html">pyarrow.scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.NA.html">pyarrow.NA</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Scalar.html">pyarrow.Scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.BooleanScalar.html">pyarrow.BooleanScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Int8Scalar.html">pyarrow.Int8Scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Int16Scalar.html">pyarrow.Int16Scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Int32Scalar.html">pyarrow.Int32Scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Int64Scalar.html">pyarrow.Int64Scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.NullScalar.html">pyarrow.NullScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.UInt8Scalar.html">pyarrow.UInt8Scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.UInt16Scalar.html">pyarrow.UInt16Scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.UInt32Scalar.html">pyarrow.UInt32Scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.UInt64Scalar.html">pyarrow.UInt64Scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.HalfFloatScalar.html">pyarrow.HalfFloatScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.FloatScalar.html">pyarrow.FloatScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.DoubleScalar.html">pyarrow.DoubleScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.BinaryScalar.html">pyarrow.BinaryScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.StringScalar.html">pyarrow.StringScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.FixedSizeBinaryScalar.html">pyarrow.FixedSizeBinaryScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.LargeBinaryScalar.html">pyarrow.LargeBinaryScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.LargeStringScalar.html">pyarrow.LargeStringScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.BinaryViewScalar.html">pyarrow.BinaryViewScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.StringViewScalar.html">pyarrow.StringViewScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Time32Scalar.html">pyarrow.Time32Scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Time64Scalar.html">pyarrow.Time64Scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Date32Scalar.html">pyarrow.Date32Scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Date64Scalar.html">pyarrow.Date64Scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.TimestampScalar.html">pyarrow.TimestampScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.DurationScalar.html">pyarrow.DurationScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.MonthDayNanoIntervalScalar.html">pyarrow.MonthDayNanoIntervalScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Decimal128Scalar.html">pyarrow.Decimal128Scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Decimal256Scalar.html">pyarrow.Decimal256Scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.DictionaryScalar.html">pyarrow.DictionaryScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.RunEndEncodedScalar.html">pyarrow.RunEndEncodedScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ListScalar.html">pyarrow.ListScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.FixedSizeListScalar.html">pyarrow.FixedSizeListScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.LargeListScalar.html">pyarrow.LargeListScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ListViewScalar.html">pyarrow.ListViewScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.LargeListViewScalar.html">pyarrow.LargeListViewScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.MapScalar.html">pyarrow.MapScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.StructScalar.html">pyarrow.StructScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.UnionScalar.html">pyarrow.UnionScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ExtensionScalar.html">pyarrow.ExtensionScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.FixedShapeTensorScalar.html">pyarrow.FixedShapeTensorScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.OpaqueScalar.html">pyarrow.OpaqueScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.JsonScalar.html">pyarrow.JsonScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.UuidScalar.html">pyarrow.UuidScalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Bool8Scalar.html">pyarrow.Bool8Scalar</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="api/memory.html">Buffers and Memory</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.allocate_buffer.html">pyarrow.allocate_buffer</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.py_buffer.html">pyarrow.py_buffer</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.foreign_buffer.html">pyarrow.foreign_buffer</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Buffer.html">pyarrow.Buffer</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ResizableBuffer.html">pyarrow.ResizableBuffer</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Codec.html">pyarrow.Codec</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compress.html">pyarrow.compress</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.decompress.html">pyarrow.decompress</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.MemoryPool.html">pyarrow.MemoryPool</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.default_memory_pool.html">pyarrow.default_memory_pool</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.jemalloc_memory_pool.html">pyarrow.jemalloc_memory_pool</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.mimalloc_memory_pool.html">pyarrow.mimalloc_memory_pool</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.system_memory_pool.html">pyarrow.system_memory_pool</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.jemalloc_set_decay_ms.html">pyarrow.jemalloc_set_decay_ms</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.set_memory_pool.html">pyarrow.set_memory_pool</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.log_memory_allocations.html">pyarrow.log_memory_allocations</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.total_allocated_bytes.html">pyarrow.total_allocated_bytes</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="api/tables.html">Tables and Tensors</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.chunked_array.html">pyarrow.chunked_array</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.concat_arrays.html">pyarrow.concat_arrays</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.concat_tables.html">pyarrow.concat_tables</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.record_batch.html">pyarrow.record_batch</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.concat_batches.html">pyarrow.concat_batches</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.table.html">pyarrow.table</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ChunkedArray.html">pyarrow.ChunkedArray</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.RecordBatch.html">pyarrow.RecordBatch</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Table.html">pyarrow.Table</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.TableGroupBy.html">pyarrow.TableGroupBy</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.RecordBatchReader.html">pyarrow.RecordBatchReader</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.interchange.from_dataframe.html">pyarrow.interchange.from_dataframe</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.Tensor.html">pyarrow.Tensor</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="api/compute.html">Compute Functions</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.all.html">pyarrow.compute.all</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.any.html">pyarrow.compute.any</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.approximate_median.html">pyarrow.compute.approximate_median</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.count.html">pyarrow.compute.count</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.count_distinct.html">pyarrow.compute.count_distinct</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.index.html">pyarrow.compute.index</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.max.html">pyarrow.compute.max</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.mean.html">pyarrow.compute.mean</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.min.html">pyarrow.compute.min</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.min_max.html">pyarrow.compute.min_max</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.mode.html">pyarrow.compute.mode</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.pivot_wider.html">pyarrow.compute.pivot_wider</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.product.html">pyarrow.compute.product</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.quantile.html">pyarrow.compute.quantile</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.stddev.html">pyarrow.compute.stddev</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.sum.html">pyarrow.compute.sum</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.tdigest.html">pyarrow.compute.tdigest</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.variance.html">pyarrow.compute.variance</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.cumulative_sum.html">pyarrow.compute.cumulative_sum</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.cumulative_sum_checked.html">pyarrow.compute.cumulative_sum_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.cumulative_prod.html">pyarrow.compute.cumulative_prod</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.cumulative_prod_checked.html">pyarrow.compute.cumulative_prod_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.cumulative_max.html">pyarrow.compute.cumulative_max</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.cumulative_min.html">pyarrow.compute.cumulative_min</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.abs.html">pyarrow.compute.abs</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.abs_checked.html">pyarrow.compute.abs_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.add.html">pyarrow.compute.add</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.add_checked.html">pyarrow.compute.add_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.divide.html">pyarrow.compute.divide</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.divide_checked.html">pyarrow.compute.divide_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.multiply.html">pyarrow.compute.multiply</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.multiply_checked.html">pyarrow.compute.multiply_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.negate.html">pyarrow.compute.negate</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.negate_checked.html">pyarrow.compute.negate_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.power.html">pyarrow.compute.power</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.power_checked.html">pyarrow.compute.power_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.sign.html">pyarrow.compute.sign</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.sqrt.html">pyarrow.compute.sqrt</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.sqrt_checked.html">pyarrow.compute.sqrt_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.subtract.html">pyarrow.compute.subtract</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.subtract_checked.html">pyarrow.compute.subtract_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.bit_wise_and.html">pyarrow.compute.bit_wise_and</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.bit_wise_not.html">pyarrow.compute.bit_wise_not</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.bit_wise_or.html">pyarrow.compute.bit_wise_or</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.bit_wise_xor.html">pyarrow.compute.bit_wise_xor</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.shift_left.html">pyarrow.compute.shift_left</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.shift_left_checked.html">pyarrow.compute.shift_left_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.shift_right.html">pyarrow.compute.shift_right</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.shift_right_checked.html">pyarrow.compute.shift_right_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ceil.html">pyarrow.compute.ceil</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.floor.html">pyarrow.compute.floor</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.round.html">pyarrow.compute.round</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.round_to_multiple.html">pyarrow.compute.round_to_multiple</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.trunc.html">pyarrow.compute.trunc</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ln.html">pyarrow.compute.ln</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ln_checked.html">pyarrow.compute.ln_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.log10.html">pyarrow.compute.log10</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.log10_checked.html">pyarrow.compute.log10_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.log1p.html">pyarrow.compute.log1p</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.log1p_checked.html">pyarrow.compute.log1p_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.log2.html">pyarrow.compute.log2</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.log2_checked.html">pyarrow.compute.log2_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.logb.html">pyarrow.compute.logb</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.logb_checked.html">pyarrow.compute.logb_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.acos.html">pyarrow.compute.acos</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.acos_checked.html">pyarrow.compute.acos_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.asin.html">pyarrow.compute.asin</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.asin_checked.html">pyarrow.compute.asin_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.atan.html">pyarrow.compute.atan</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.atan2.html">pyarrow.compute.atan2</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.cos.html">pyarrow.compute.cos</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.cos_checked.html">pyarrow.compute.cos_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.sin.html">pyarrow.compute.sin</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.sin_checked.html">pyarrow.compute.sin_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.tan.html">pyarrow.compute.tan</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.tan_checked.html">pyarrow.compute.tan_checked</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.equal.html">pyarrow.compute.equal</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.greater.html">pyarrow.compute.greater</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.greater_equal.html">pyarrow.compute.greater_equal</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.less.html">pyarrow.compute.less</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.less_equal.html">pyarrow.compute.less_equal</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.not_equal.html">pyarrow.compute.not_equal</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.max_element_wise.html">pyarrow.compute.max_element_wise</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.min_element_wise.html">pyarrow.compute.min_element_wise</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.and_.html">pyarrow.compute.and_</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.and_kleene.html">pyarrow.compute.and_kleene</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.and_not.html">pyarrow.compute.and_not</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.and_not_kleene.html">pyarrow.compute.and_not_kleene</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.invert.html">pyarrow.compute.invert</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.or_.html">pyarrow.compute.or_</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.or_kleene.html">pyarrow.compute.or_kleene</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.xor.html">pyarrow.compute.xor</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_is_alnum.html">pyarrow.compute.ascii_is_alnum</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_is_alpha.html">pyarrow.compute.ascii_is_alpha</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_is_decimal.html">pyarrow.compute.ascii_is_decimal</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_is_lower.html">pyarrow.compute.ascii_is_lower</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_is_printable.html">pyarrow.compute.ascii_is_printable</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_is_space.html">pyarrow.compute.ascii_is_space</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_is_upper.html">pyarrow.compute.ascii_is_upper</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_is_alnum.html">pyarrow.compute.utf8_is_alnum</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_is_alpha.html">pyarrow.compute.utf8_is_alpha</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_is_decimal.html">pyarrow.compute.utf8_is_decimal</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_is_digit.html">pyarrow.compute.utf8_is_digit</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_is_lower.html">pyarrow.compute.utf8_is_lower</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_is_numeric.html">pyarrow.compute.utf8_is_numeric</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_is_printable.html">pyarrow.compute.utf8_is_printable</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_is_space.html">pyarrow.compute.utf8_is_space</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_is_upper.html">pyarrow.compute.utf8_is_upper</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_is_title.html">pyarrow.compute.ascii_is_title</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_is_title.html">pyarrow.compute.utf8_is_title</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.string_is_ascii.html">pyarrow.compute.string_is_ascii</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_capitalize.html">pyarrow.compute.ascii_capitalize</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_lower.html">pyarrow.compute.ascii_lower</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_reverse.html">pyarrow.compute.ascii_reverse</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_swapcase.html">pyarrow.compute.ascii_swapcase</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_title.html">pyarrow.compute.ascii_title</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_upper.html">pyarrow.compute.ascii_upper</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.binary_length.html">pyarrow.compute.binary_length</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.binary_repeat.html">pyarrow.compute.binary_repeat</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.binary_replace_slice.html">pyarrow.compute.binary_replace_slice</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.binary_reverse.html">pyarrow.compute.binary_reverse</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.replace_substring.html">pyarrow.compute.replace_substring</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.replace_substring_regex.html">pyarrow.compute.replace_substring_regex</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_capitalize.html">pyarrow.compute.utf8_capitalize</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_length.html">pyarrow.compute.utf8_length</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_lower.html">pyarrow.compute.utf8_lower</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_replace_slice.html">pyarrow.compute.utf8_replace_slice</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_reverse.html">pyarrow.compute.utf8_reverse</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_swapcase.html">pyarrow.compute.utf8_swapcase</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_title.html">pyarrow.compute.utf8_title</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_upper.html">pyarrow.compute.utf8_upper</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_center.html">pyarrow.compute.ascii_center</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_lpad.html">pyarrow.compute.ascii_lpad</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_rpad.html">pyarrow.compute.ascii_rpad</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_center.html">pyarrow.compute.utf8_center</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_lpad.html">pyarrow.compute.utf8_lpad</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_rpad.html">pyarrow.compute.utf8_rpad</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_zero_fill.html">pyarrow.compute.utf8_zero_fill</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_ltrim.html">pyarrow.compute.ascii_ltrim</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_ltrim_whitespace.html">pyarrow.compute.ascii_ltrim_whitespace</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_rtrim.html">pyarrow.compute.ascii_rtrim</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_rtrim_whitespace.html">pyarrow.compute.ascii_rtrim_whitespace</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_trim.html">pyarrow.compute.ascii_trim</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_trim_whitespace.html">pyarrow.compute.ascii_trim_whitespace</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_ltrim.html">pyarrow.compute.utf8_ltrim</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_ltrim_whitespace.html">pyarrow.compute.utf8_ltrim_whitespace</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_rtrim.html">pyarrow.compute.utf8_rtrim</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_rtrim_whitespace.html">pyarrow.compute.utf8_rtrim_whitespace</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_trim.html">pyarrow.compute.utf8_trim</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_trim_whitespace.html">pyarrow.compute.utf8_trim_whitespace</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ascii_split_whitespace.html">pyarrow.compute.ascii_split_whitespace</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.split_pattern.html">pyarrow.compute.split_pattern</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.split_pattern_regex.html">pyarrow.compute.split_pattern_regex</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_split_whitespace.html">pyarrow.compute.utf8_split_whitespace</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.extract_regex.html">pyarrow.compute.extract_regex</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.binary_join.html">pyarrow.compute.binary_join</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.binary_join_element_wise.html">pyarrow.compute.binary_join_element_wise</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.binary_slice.html">pyarrow.compute.binary_slice</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.utf8_slice_codeunits.html">pyarrow.compute.utf8_slice_codeunits</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.count_substring.html">pyarrow.compute.count_substring</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.count_substring_regex.html">pyarrow.compute.count_substring_regex</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ends_with.html">pyarrow.compute.ends_with</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.find_substring.html">pyarrow.compute.find_substring</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.find_substring_regex.html">pyarrow.compute.find_substring_regex</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.index_in.html">pyarrow.compute.index_in</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.is_in.html">pyarrow.compute.is_in</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.match_like.html">pyarrow.compute.match_like</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.match_substring.html">pyarrow.compute.match_substring</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.match_substring_regex.html">pyarrow.compute.match_substring_regex</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.starts_with.html">pyarrow.compute.starts_with</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.indices_nonzero.html">pyarrow.compute.indices_nonzero</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.is_finite.html">pyarrow.compute.is_finite</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.is_inf.html">pyarrow.compute.is_inf</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.is_nan.html">pyarrow.compute.is_nan</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.is_null.html">pyarrow.compute.is_null</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.is_valid.html">pyarrow.compute.is_valid</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.true_unless_null.html">pyarrow.compute.true_unless_null</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.case_when.html">pyarrow.compute.case_when</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.choose.html">pyarrow.compute.choose</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.coalesce.html">pyarrow.compute.coalesce</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.if_else.html">pyarrow.compute.if_else</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.cast.html">pyarrow.compute.cast</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ceil_temporal.html">pyarrow.compute.ceil_temporal</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.floor_temporal.html">pyarrow.compute.floor_temporal</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.round_temporal.html">pyarrow.compute.round_temporal</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.run_end_decode.html">pyarrow.compute.run_end_decode</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.run_end_encode.html">pyarrow.compute.run_end_encode</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.strftime.html">pyarrow.compute.strftime</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.strptime.html">pyarrow.compute.strptime</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.day.html">pyarrow.compute.day</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.day_of_week.html">pyarrow.compute.day_of_week</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.day_of_year.html">pyarrow.compute.day_of_year</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.hour.html">pyarrow.compute.hour</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.iso_week.html">pyarrow.compute.iso_week</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.iso_year.html">pyarrow.compute.iso_year</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.iso_calendar.html">pyarrow.compute.iso_calendar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.is_leap_year.html">pyarrow.compute.is_leap_year</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.microsecond.html">pyarrow.compute.microsecond</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.millisecond.html">pyarrow.compute.millisecond</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.minute.html">pyarrow.compute.minute</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.month.html">pyarrow.compute.month</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.nanosecond.html">pyarrow.compute.nanosecond</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.quarter.html">pyarrow.compute.quarter</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.second.html">pyarrow.compute.second</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.subsecond.html">pyarrow.compute.subsecond</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.us_week.html">pyarrow.compute.us_week</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.us_year.html">pyarrow.compute.us_year</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.week.html">pyarrow.compute.week</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.year.html">pyarrow.compute.year</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.year_month_day.html">pyarrow.compute.year_month_day</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.day_time_interval_between.html">pyarrow.compute.day_time_interval_between</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.days_between.html">pyarrow.compute.days_between</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.hours_between.html">pyarrow.compute.hours_between</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.microseconds_between.html">pyarrow.compute.microseconds_between</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.milliseconds_between.html">pyarrow.compute.milliseconds_between</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.minutes_between.html">pyarrow.compute.minutes_between</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.month_day_nano_interval_between.html">pyarrow.compute.month_day_nano_interval_between</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.month_interval_between.html">pyarrow.compute.month_interval_between</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.nanoseconds_between.html">pyarrow.compute.nanoseconds_between</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.quarters_between.html">pyarrow.compute.quarters_between</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.seconds_between.html">pyarrow.compute.seconds_between</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.weeks_between.html">pyarrow.compute.weeks_between</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.years_between.html">pyarrow.compute.years_between</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.assume_timezone.html">pyarrow.compute.assume_timezone</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.local_timestamp.html">pyarrow.compute.local_timestamp</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.dictionary_encode.html">pyarrow.compute.dictionary_encode</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.unique.html">pyarrow.compute.unique</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.value_counts.html">pyarrow.compute.value_counts</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.array_filter.html">pyarrow.compute.array_filter</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.array_take.html">pyarrow.compute.array_take</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.drop_null.html">pyarrow.compute.drop_null</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.filter.html">pyarrow.compute.filter</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.take.html">pyarrow.compute.take</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.array_sort_indices.html">pyarrow.compute.array_sort_indices</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.partition_nth_indices.html">pyarrow.compute.partition_nth_indices</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.select_k_unstable.html">pyarrow.compute.select_k_unstable</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.sort_indices.html">pyarrow.compute.sort_indices</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.fill_null.html">pyarrow.compute.fill_null</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.fill_null_backward.html">pyarrow.compute.fill_null_backward</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.fill_null_forward.html">pyarrow.compute.fill_null_forward</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.list_element.html">pyarrow.compute.list_element</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.list_flatten.html">pyarrow.compute.list_flatten</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.list_parent_indices.html">pyarrow.compute.list_parent_indices</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.list_slice.html">pyarrow.compute.list_slice</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.list_value_length.html">pyarrow.compute.list_value_length</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.make_struct.html">pyarrow.compute.make_struct</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.map_lookup.html">pyarrow.compute.map_lookup</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.replace_with_mask.html">pyarrow.compute.replace_with_mask</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.struct_field.html">pyarrow.compute.struct_field</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.pairwise_diff.html">pyarrow.compute.pairwise_diff</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ArraySortOptions.html">pyarrow.compute.ArraySortOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.AssumeTimezoneOptions.html">pyarrow.compute.AssumeTimezoneOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.CastOptions.html">pyarrow.compute.CastOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.CountOptions.html">pyarrow.compute.CountOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.CumulativeSumOptions.html">pyarrow.compute.CumulativeSumOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.DayOfWeekOptions.html">pyarrow.compute.DayOfWeekOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.DictionaryEncodeOptions.html">pyarrow.compute.DictionaryEncodeOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ElementWiseAggregateOptions.html">pyarrow.compute.ElementWiseAggregateOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ExtractRegexOptions.html">pyarrow.compute.ExtractRegexOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.FilterOptions.html">pyarrow.compute.FilterOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.IndexOptions.html">pyarrow.compute.IndexOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.JoinOptions.html">pyarrow.compute.JoinOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ListSliceOptions.html">pyarrow.compute.ListSliceOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.MakeStructOptions.html">pyarrow.compute.MakeStructOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.MapLookupOptions.html">pyarrow.compute.MapLookupOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.MatchSubstringOptions.html">pyarrow.compute.MatchSubstringOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ModeOptions.html">pyarrow.compute.ModeOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.NullOptions.html">pyarrow.compute.NullOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.PadOptions.html">pyarrow.compute.PadOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ZeroFillOptions.html">pyarrow.compute.ZeroFillOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.PairwiseOptions.html">pyarrow.compute.PairwiseOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.PartitionNthOptions.html">pyarrow.compute.PartitionNthOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.PivotWiderOptions.html">pyarrow.compute.PivotWiderOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.QuantileOptions.html">pyarrow.compute.QuantileOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ReplaceSliceOptions.html">pyarrow.compute.ReplaceSliceOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ReplaceSubstringOptions.html">pyarrow.compute.ReplaceSubstringOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.RoundOptions.html">pyarrow.compute.RoundOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.RoundTemporalOptions.html">pyarrow.compute.RoundTemporalOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.RoundToMultipleOptions.html">pyarrow.compute.RoundToMultipleOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.RunEndEncodeOptions.html">pyarrow.compute.RunEndEncodeOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.ScalarAggregateOptions.html">pyarrow.compute.ScalarAggregateOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.SelectKOptions.html">pyarrow.compute.SelectKOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.SetLookupOptions.html">pyarrow.compute.SetLookupOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.SliceOptions.html">pyarrow.compute.SliceOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.SortOptions.html">pyarrow.compute.SortOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.SplitOptions.html">pyarrow.compute.SplitOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.SplitPatternOptions.html">pyarrow.compute.SplitPatternOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.StrftimeOptions.html">pyarrow.compute.StrftimeOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.StrptimeOptions.html">pyarrow.compute.StrptimeOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.StructFieldOptions.html">pyarrow.compute.StructFieldOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.TakeOptions.html">pyarrow.compute.TakeOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.TDigestOptions.html">pyarrow.compute.TDigestOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.TrimOptions.html">pyarrow.compute.TrimOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.VarianceOptions.html">pyarrow.compute.VarianceOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.WeekOptions.html">pyarrow.compute.WeekOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.register_scalar_function.html">pyarrow.compute.register_scalar_function</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.UdfContext.html">pyarrow.compute.UdfContext</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.field.html">pyarrow.compute.field</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.compute.scalar.html">pyarrow.compute.scalar</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="api/acero.html">Acero - Streaming Execution Engine</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.acero.Declaration.html">pyarrow.acero.Declaration</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.acero.ExecNodeOptions.html">pyarrow.acero.ExecNodeOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.acero.TableSourceNodeOptions.html">pyarrow.acero.TableSourceNodeOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.acero.ScanNodeOptions.html">pyarrow.acero.ScanNodeOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.acero.FilterNodeOptions.html">pyarrow.acero.FilterNodeOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.acero.ProjectNodeOptions.html">pyarrow.acero.ProjectNodeOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.acero.AggregateNodeOptions.html">pyarrow.acero.AggregateNodeOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.acero.OrderByNodeOptions.html">pyarrow.acero.OrderByNodeOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.acero.HashJoinNodeOptions.html">pyarrow.acero.HashJoinNodeOptions</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="api/substrait.html">Substrait</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.substrait.run_query.html">pyarrow.substrait.run_query</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.substrait.BoundExpressions.html">pyarrow.substrait.BoundExpressions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.substrait.deserialize_expressions.html">pyarrow.substrait.deserialize_expressions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.substrait.serialize_expressions.html">pyarrow.substrait.serialize_expressions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.substrait.serialize_schema.html">pyarrow.substrait.serialize_schema</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.substrait.deserialize_schema.html">pyarrow.substrait.deserialize_schema</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.substrait.SubstraitSchema.html">pyarrow.substrait.SubstraitSchema</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.substrait.get_supported_functions.html">pyarrow.substrait.get_supported_functions</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="api/files.html">Streams and File Access</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.input_stream.html">pyarrow.input_stream</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.output_stream.html">pyarrow.output_stream</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.memory_map.html">pyarrow.memory_map</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.create_memory_map.html">pyarrow.create_memory_map</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.NativeFile.html">pyarrow.NativeFile</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.OSFile.html">pyarrow.OSFile</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.PythonFile.html">pyarrow.PythonFile</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.BufferReader.html">pyarrow.BufferReader</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.BufferOutputStream.html">pyarrow.BufferOutputStream</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.FixedSizeBufferWriter.html">pyarrow.FixedSizeBufferWriter</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.MemoryMappedFile.html">pyarrow.MemoryMappedFile</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.CompressedInputStream.html">pyarrow.CompressedInputStream</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.CompressedOutputStream.html">pyarrow.CompressedOutputStream</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="api/ipc.html">Serialization and IPC</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.new_file.html">pyarrow.ipc.new_file</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.open_file.html">pyarrow.ipc.open_file</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.new_stream.html">pyarrow.ipc.new_stream</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.open_stream.html">pyarrow.ipc.open_stream</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.read_message.html">pyarrow.ipc.read_message</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.read_record_batch.html">pyarrow.ipc.read_record_batch</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.get_record_batch_size.html">pyarrow.ipc.get_record_batch_size</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.read_tensor.html">pyarrow.ipc.read_tensor</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.write_tensor.html">pyarrow.ipc.write_tensor</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.get_tensor_size.html">pyarrow.ipc.get_tensor_size</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.IpcReadOptions.html">pyarrow.ipc.IpcReadOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.IpcWriteOptions.html">pyarrow.ipc.IpcWriteOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.Message.html">pyarrow.ipc.Message</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.MessageReader.html">pyarrow.ipc.MessageReader</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.RecordBatchFileReader.html">pyarrow.ipc.RecordBatchFileReader</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.RecordBatchFileWriter.html">pyarrow.ipc.RecordBatchFileWriter</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.RecordBatchStreamReader.html">pyarrow.ipc.RecordBatchStreamReader</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.ipc.RecordBatchStreamWriter.html">pyarrow.ipc.RecordBatchStreamWriter</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="api/flight.html">Arrow Flight</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.Action.html">pyarrow.flight.Action</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.ActionType.html">pyarrow.flight.ActionType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.DescriptorType.html">pyarrow.flight.DescriptorType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightDescriptor.html">pyarrow.flight.FlightDescriptor</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightEndpoint.html">pyarrow.flight.FlightEndpoint</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightInfo.html">pyarrow.flight.FlightInfo</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.Location.html">pyarrow.flight.Location</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.MetadataRecordBatchReader.html">pyarrow.flight.MetadataRecordBatchReader</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.MetadataRecordBatchWriter.html">pyarrow.flight.MetadataRecordBatchWriter</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.Ticket.html">pyarrow.flight.Ticket</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.Result.html">pyarrow.flight.Result</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.connect.html">pyarrow.flight.connect</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightCallOptions.html">pyarrow.flight.FlightCallOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightClient.html">pyarrow.flight.FlightClient</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightStreamReader.html">pyarrow.flight.FlightStreamReader</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightStreamWriter.html">pyarrow.flight.FlightStreamWriter</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.ClientMiddlewareFactory.html">pyarrow.flight.ClientMiddlewareFactory</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.ClientMiddleware.html">pyarrow.flight.ClientMiddleware</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightDataStream.html">pyarrow.flight.FlightDataStream</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightMetadataWriter.html">pyarrow.flight.FlightMetadataWriter</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightServerBase.html">pyarrow.flight.FlightServerBase</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.GeneratorStream.html">pyarrow.flight.GeneratorStream</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.RecordBatchStream.html">pyarrow.flight.RecordBatchStream</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.ServerCallContext.html">pyarrow.flight.ServerCallContext</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.ServerMiddlewareFactory.html">pyarrow.flight.ServerMiddlewareFactory</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.ServerMiddleware.html">pyarrow.flight.ServerMiddleware</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.ClientAuthHandler.html">pyarrow.flight.ClientAuthHandler</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.ServerAuthHandler.html">pyarrow.flight.ServerAuthHandler</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightError.html">pyarrow.flight.FlightError</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightCancelledError.html">pyarrow.flight.FlightCancelledError</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightInternalError.html">pyarrow.flight.FlightInternalError</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightServerError.html">pyarrow.flight.FlightServerError</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightTimedOutError.html">pyarrow.flight.FlightTimedOutError</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightUnauthenticatedError.html">pyarrow.flight.FlightUnauthenticatedError</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightUnauthorizedError.html">pyarrow.flight.FlightUnauthorizedError</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightUnavailableError.html">pyarrow.flight.FlightUnavailableError</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightWriteSizeExceededError.html">pyarrow.flight.FlightWriteSizeExceededError</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.FlightMethod.html">pyarrow.flight.FlightMethod</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.flight.CallInfo.html">pyarrow.flight.CallInfo</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="api/formats.html">Tabular File Formats</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.csv.ConvertOptions.html">pyarrow.csv.ConvertOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.csv.CSVStreamingReader.html">pyarrow.csv.CSVStreamingReader</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.csv.CSVWriter.html">pyarrow.csv.CSVWriter</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.csv.ISO8601.html">pyarrow.csv.ISO8601</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.csv.ParseOptions.html">pyarrow.csv.ParseOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.csv.ReadOptions.html">pyarrow.csv.ReadOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.csv.WriteOptions.html">pyarrow.csv.WriteOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.csv.open_csv.html">pyarrow.csv.open_csv</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.csv.read_csv.html">pyarrow.csv.read_csv</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.csv.write_csv.html">pyarrow.csv.write_csv</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.csv.InvalidRow.html">pyarrow.csv.InvalidRow</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.feather.read_feather.html">pyarrow.feather.read_feather</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.feather.read_table.html">pyarrow.feather.read_table</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.feather.write_feather.html">pyarrow.feather.write_feather</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.json.ReadOptions.html">pyarrow.json.ReadOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.json.ParseOptions.html">pyarrow.json.ParseOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.json.open_json.html">pyarrow.json.open_json</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.json.read_json.html">pyarrow.json.read_json</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.ParquetDataset.html">pyarrow.parquet.ParquetDataset</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.ParquetFile.html">pyarrow.parquet.ParquetFile</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.ParquetWriter.html">pyarrow.parquet.ParquetWriter</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.read_table.html">pyarrow.parquet.read_table</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.read_metadata.html">pyarrow.parquet.read_metadata</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.read_pandas.html">pyarrow.parquet.read_pandas</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.read_schema.html">pyarrow.parquet.read_schema</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.write_metadata.html">pyarrow.parquet.write_metadata</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.write_table.html">pyarrow.parquet.write_table</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.write_to_dataset.html">pyarrow.parquet.write_to_dataset</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.FileMetaData.html">pyarrow.parquet.FileMetaData</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.RowGroupMetaData.html">pyarrow.parquet.RowGroupMetaData</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.SortingColumn.html">pyarrow.parquet.SortingColumn</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.ColumnChunkMetaData.html">pyarrow.parquet.ColumnChunkMetaData</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.Statistics.html">pyarrow.parquet.Statistics</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.ParquetSchema.html">pyarrow.parquet.ParquetSchema</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.ColumnSchema.html">pyarrow.parquet.ColumnSchema</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.ParquetLogicalType.html">pyarrow.parquet.ParquetLogicalType</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.encryption.CryptoFactory.html">pyarrow.parquet.encryption.CryptoFactory</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.encryption.KmsClient.html">pyarrow.parquet.encryption.KmsClient</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.encryption.KmsConnectionConfig.html">pyarrow.parquet.encryption.KmsConnectionConfig</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.encryption.EncryptionConfiguration.html">pyarrow.parquet.encryption.EncryptionConfiguration</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.parquet.encryption.DecryptionConfiguration.html">pyarrow.parquet.encryption.DecryptionConfiguration</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.orc.ORCFile.html">pyarrow.orc.ORCFile</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.orc.ORCWriter.html">pyarrow.orc.ORCWriter</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.orc.read_table.html">pyarrow.orc.read_table</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.orc.write_table.html">pyarrow.orc.write_table</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="api/filesystems.html">Filesystems</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.FileInfo.html">pyarrow.fs.FileInfo</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.FileSelector.html">pyarrow.fs.FileSelector</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.FileSystem.html">pyarrow.fs.FileSystem</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.LocalFileSystem.html">pyarrow.fs.LocalFileSystem</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.S3FileSystem.html">pyarrow.fs.S3FileSystem</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.GcsFileSystem.html">pyarrow.fs.GcsFileSystem</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.HadoopFileSystem.html">pyarrow.fs.HadoopFileSystem</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.SubTreeFileSystem.html">pyarrow.fs.SubTreeFileSystem</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.AzureFileSystem.html">pyarrow.fs.AzureFileSystem</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.PyFileSystem.html">pyarrow.fs.PyFileSystem</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.FileSystemHandler.html">pyarrow.fs.FileSystemHandler</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.FSSpecHandler.html">pyarrow.fs.FSSpecHandler</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.copy_files.html">pyarrow.fs.copy_files</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.initialize_s3.html">pyarrow.fs.initialize_s3</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.finalize_s3.html">pyarrow.fs.finalize_s3</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.resolve_s3_region.html">pyarrow.fs.resolve_s3_region</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.fs.S3LogLevel.html">pyarrow.fs.S3LogLevel</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="api/dataset.html">Dataset</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.dataset.html">pyarrow.dataset.dataset</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.parquet_dataset.html">pyarrow.dataset.parquet_dataset</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.partitioning.html">pyarrow.dataset.partitioning</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.field.html">pyarrow.dataset.field</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.scalar.html">pyarrow.dataset.scalar</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.write_dataset.html">pyarrow.dataset.write_dataset</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.FileFormat.html">pyarrow.dataset.FileFormat</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.CsvFileFormat.html">pyarrow.dataset.CsvFileFormat</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.CsvFragmentScanOptions.html">pyarrow.dataset.CsvFragmentScanOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.IpcFileFormat.html">pyarrow.dataset.IpcFileFormat</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.JsonFileFormat.html">pyarrow.dataset.JsonFileFormat</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.ParquetFileFormat.html">pyarrow.dataset.ParquetFileFormat</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.ParquetReadOptions.html">pyarrow.dataset.ParquetReadOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.ParquetFragmentScanOptions.html">pyarrow.dataset.ParquetFragmentScanOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.ParquetFileFragment.html">pyarrow.dataset.ParquetFileFragment</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.OrcFileFormat.html">pyarrow.dataset.OrcFileFormat</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.Partitioning.html">pyarrow.dataset.Partitioning</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.PartitioningFactory.html">pyarrow.dataset.PartitioningFactory</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.DirectoryPartitioning.html">pyarrow.dataset.DirectoryPartitioning</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.HivePartitioning.html">pyarrow.dataset.HivePartitioning</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.FilenamePartitioning.html">pyarrow.dataset.FilenamePartitioning</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.Dataset.html">pyarrow.dataset.Dataset</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.FileSystemDataset.html">pyarrow.dataset.FileSystemDataset</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.FileSystemFactoryOptions.html">pyarrow.dataset.FileSystemFactoryOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.FileSystemDatasetFactory.html">pyarrow.dataset.FileSystemDatasetFactory</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.UnionDataset.html">pyarrow.dataset.UnionDataset</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.Fragment.html">pyarrow.dataset.Fragment</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.FragmentScanOptions.html">pyarrow.dataset.FragmentScanOptions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.TaggedRecordBatch.html">pyarrow.dataset.TaggedRecordBatch</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.Scanner.html">pyarrow.dataset.Scanner</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.Expression.html">pyarrow.dataset.Expression</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.InMemoryDataset.html">pyarrow.dataset.InMemoryDataset</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.WrittenFile.html">pyarrow.dataset.WrittenFile</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.dataset.get_partition_keys.html">pyarrow.dataset.get_partition_keys</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="api/cuda.html">CUDA Integration</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.cuda.Context.html">pyarrow.cuda.Context</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.cuda.CudaBuffer.html">pyarrow.cuda.CudaBuffer</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.cuda.new_host_buffer.html">pyarrow.cuda.new_host_buffer</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.cuda.HostBuffer.html">pyarrow.cuda.HostBuffer</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.cuda.BufferReader.html">pyarrow.cuda.BufferReader</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.cuda.BufferWriter.html">pyarrow.cuda.BufferWriter</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.cuda.serialize_record_batch.html">pyarrow.cuda.serialize_record_batch</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.cuda.read_record_batch.html">pyarrow.cuda.read_record_batch</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.cuda.read_message.html">pyarrow.cuda.read_message</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.cuda.IpcMemHandle.html">pyarrow.cuda.IpcMemHandle</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l3 has-children"><a class="reference internal" href="api/misc.html">Miscellaneous</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.cpu_count.html">pyarrow.cpu_count</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.set_cpu_count.html">pyarrow.set_cpu_count</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.io_thread_count.html">pyarrow.io_thread_count</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.set_io_thread_count.html">pyarrow.set_io_thread_count</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.get_include.html">pyarrow.get_include</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.get_libraries.html">pyarrow.get_libraries</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="generated/pyarrow.get_library_dirs.html">pyarrow.get_library_dirs</a></li> |
| </ul> |
| </details></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l2"><a class="reference internal" href="getting_involved.html">Getting Involved</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="benchmarks.html">Benchmarks</a></li> |
| <li class="toctree-l2"><a class="reference external" href="https://arrow.apache.org/cookbook/py/">Python cookbook</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l1"><a class="reference external" href="https://arrow.apache.org/docs/r">R</a></li> |
| <li class="toctree-l1"><a class="reference external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">Ruby</a></li> |
| <li class="toctree-l1"><a class="reference external" href="https://docs.rs/crate/arrow/">Rust</a></li> |
| <li class="toctree-l1"><a class="reference external" href="https://github.com/apache/arrow-swift/blob/main/Arrow/README.md">Swift</a></li> |
| <li class="toctree-l1"><a class="reference external" href="https://arrow.apache.org/nanoarrow/">nanoarrow</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../status.html">Implementation Status</a></li> |
| </ul> |
| </div> |
| </nav></div> |
| </div> |
| |
| |
| <div class="sidebar-primary-items__end sidebar-primary__section"> |
| <div class="sidebar-primary-item"> |
| <div id="ethical-ad-placement" |
| class="flat" |
| data-ea-publisher="readthedocs" |
| data-ea-type="readthedocs-sidebar" |
| data-ea-manual="true"> |
| </div></div> |
| </div> |
| |
| |
| </div> |
| |
| <main id="main-content" class="bd-main" role="main"> |
| |
| |
| <div class="bd-content"> |
| <div class="bd-article-container"> |
| |
| <div class="bd-header-article d-print-none"> |
| <div class="header-article-items header-article__inner"> |
| |
| <div class="header-article-items__start"> |
| |
| <div class="header-article-item"> |
| |
| <nav aria-label="Breadcrumb" class="d-print-none"> |
| <ul class="bd-breadcrumbs"> |
| |
| <li class="breadcrumb-item breadcrumb-home"> |
| <a href="../index.html" class="nav-link" aria-label="Home"> |
| <i class="fa-solid fa-home"></i> |
| </a> |
| </li> |
| |
| <li class="breadcrumb-item"><a href="../implementations.html" class="nav-link">Implementations</a></li> |
| |
| |
| <li class="breadcrumb-item"><a href="index.html" class="nav-link">Python</a></li> |
| |
| <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Extending PyArrow</span></li> |
| </ul> |
| </nav> |
| </div> |
| |
| </div> |
| |
| |
| </div> |
| </div> |
| |
| |
| |
| |
| <div id="searchbox"></div> |
| <article class="bd-article"> |
| |
| <section id="extending-pyarrow"> |
| <span id="extending-types"></span><h1>Extending PyArrow<a class="headerlink" href="#extending-pyarrow" title="Link to this heading">#</a></h1> |
| <section id="controlling-conversion-to-py-arrow-with-the-pycapsule-interface"> |
| <h2>Controlling conversion to (Py)Arrow with the PyCapsule Interface<a class="headerlink" href="#controlling-conversion-to-py-arrow-with-the-pycapsule-interface" title="Link to this heading">#</a></h2> |
| <p>The <a class="reference internal" href="../format/CDataInterface.html#c-data-interface"><span class="std std-ref">Arrow C data interface</span></a> allows moving Arrow data between |
| different implementations of Arrow. This is a generic, cross-language interface not |
| specific to Python, but for Python libraries this interface is extended with a Python |
| specific layer: <a class="reference internal" href="../format/CDataInterface/PyCapsuleInterface.html#arrow-pycapsule-interface"><span class="std std-ref">The Arrow PyCapsule Interface</span></a>.</p> |
| <p>This Python interface ensures that different libraries that support the C Data interface |
| can export Arrow data structures in a standard way and recognize each other’s objects.</p> |
| <p>If you have a Python library providing data structures that hold Arrow-compatible data |
| under the hood, you can implement the following methods on those objects:</p> |
| <ul class="simple"> |
| <li><p><code class="docutils literal notranslate"><span class="pre">__arrow_c_schema__</span></code> for schema or type-like objects.</p></li> |
| <li><p><code class="docutils literal notranslate"><span class="pre">__arrow_c_array__</span></code> for arrays and record batches (contiguous tables).</p></li> |
| <li><p><code class="docutils literal notranslate"><span class="pre">__arrow_c_stream__</span></code> for chunked arrays, tables and streams of data.</p></li> |
| </ul> |
| <p>Those methods return <a class="reference external" href="https://docs.python.org/3/c-api/capsule.html">PyCapsule</a> |
| objects, and more details on the exact semantics can be found in the |
| <a class="reference internal" href="../format/CDataInterface/PyCapsuleInterface.html#arrow-pycapsule-interface"><span class="std std-ref">specification</span></a>.</p> |
| <p>When your data structures have those methods defined, the PyArrow constructors |
| (see below) will recognize those objects as |
| supporting this protocol, and convert them to PyArrow data structures zero-copy. And the |
| same can be true for any other library supporting this protocol on ingesting data.</p> |
| <p>Similarly, if your library has functions that accept user-provided data, you can add |
| support for this protocol by checking for the presence of those methods, and |
| therefore accept any Arrow data (instead of harcoding support for a specific |
| Arrow producer such as PyArrow).</p> |
| <p>For consuming data through this protocol with PyArrow, the following constructors |
| can be used to create the various PyArrow objects:</p> |
| <div class="pst-scrollable-table-container"><table class="table"> |
| <thead> |
| <tr class="row-odd"><th class="head"><p>Result class</p></th> |
| <th class="head"><p>PyArrow constructor</p></th> |
| <th class="head"><p>Supported protocol</p></th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr class="row-even"><td><p><a class="reference internal" href="generated/pyarrow.Array.html#pyarrow.Array" title="pyarrow.Array"><code class="xref py py-class docutils literal notranslate"><span class="pre">Array</span></code></a></p></td> |
| <td><p><a class="reference internal" href="generated/pyarrow.array.html#pyarrow.array" title="pyarrow.array"><code class="xref py py-func docutils literal notranslate"><span class="pre">pyarrow.array()</span></code></a></p></td> |
| <td><p>array</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="generated/pyarrow.ChunkedArray.html#pyarrow.ChunkedArray" title="pyarrow.ChunkedArray"><code class="xref py py-class docutils literal notranslate"><span class="pre">ChunkedArray</span></code></a></p></td> |
| <td><p><a class="reference internal" href="generated/pyarrow.chunked_array.html#pyarrow.chunked_array" title="pyarrow.chunked_array"><code class="xref py py-func docutils literal notranslate"><span class="pre">pyarrow.chunked_array()</span></code></a></p></td> |
| <td><p>array, stream</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="generated/pyarrow.RecordBatch.html#pyarrow.RecordBatch" title="pyarrow.RecordBatch"><code class="xref py py-class docutils literal notranslate"><span class="pre">RecordBatch</span></code></a></p></td> |
| <td><p><a class="reference internal" href="generated/pyarrow.record_batch.html#pyarrow.record_batch" title="pyarrow.record_batch"><code class="xref py py-func docutils literal notranslate"><span class="pre">pyarrow.record_batch()</span></code></a></p></td> |
| <td><p>array</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="generated/pyarrow.Table.html#pyarrow.Table" title="pyarrow.Table"><code class="xref py py-class docutils literal notranslate"><span class="pre">Table</span></code></a></p></td> |
| <td><p><a class="reference internal" href="generated/pyarrow.table.html#pyarrow.table" title="pyarrow.table"><code class="xref py py-func docutils literal notranslate"><span class="pre">pyarrow.table()</span></code></a></p></td> |
| <td><p>array, stream</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="generated/pyarrow.RecordBatchReader.html#pyarrow.RecordBatchReader" title="pyarrow.RecordBatchReader"><code class="xref py py-class docutils literal notranslate"><span class="pre">RecordBatchReader</span></code></a></p></td> |
| <td><p><a class="reference internal" href="generated/pyarrow.RecordBatchReader.html#pyarrow.RecordBatchReader.from_stream" title="pyarrow.RecordBatchReader.from_stream"><code class="xref py py-meth docutils literal notranslate"><span class="pre">pyarrow.RecordBatchReader.from_stream()</span></code></a></p></td> |
| <td><p>stream</p></td> |
| </tr> |
| <tr class="row-odd"><td><p><a class="reference internal" href="generated/pyarrow.Field.html#pyarrow.Field" title="pyarrow.Field"><code class="xref py py-class docutils literal notranslate"><span class="pre">Field</span></code></a></p></td> |
| <td><p><a class="reference internal" href="generated/pyarrow.field.html#pyarrow.field" title="pyarrow.field"><code class="xref py py-func docutils literal notranslate"><span class="pre">pyarrow.field()</span></code></a></p></td> |
| <td><p>schema</p></td> |
| </tr> |
| <tr class="row-even"><td><p><a class="reference internal" href="generated/pyarrow.Schema.html#pyarrow.Schema" title="pyarrow.Schema"><code class="xref py py-class docutils literal notranslate"><span class="pre">Schema</span></code></a></p></td> |
| <td><p><a class="reference internal" href="generated/pyarrow.schema.html#pyarrow.schema" title="pyarrow.schema"><code class="xref py py-func docutils literal notranslate"><span class="pre">pyarrow.schema()</span></code></a></p></td> |
| <td><p>schema</p></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <p>A <a class="reference internal" href="generated/pyarrow.DataType.html#pyarrow.DataType" title="pyarrow.DataType"><code class="xref py py-class docutils literal notranslate"><span class="pre">DataType</span></code></a> can be created by consuming the schema-compatible object |
| using <a class="reference internal" href="generated/pyarrow.field.html#pyarrow.field" title="pyarrow.field"><code class="xref py py-func docutils literal notranslate"><span class="pre">pyarrow.field()</span></code></a> and then accessing the <code class="docutils literal notranslate"><span class="pre">.type</span></code> of the resulting |
| Field.</p> |
| </section> |
| <section id="controlling-conversion-to-pyarrow-array-with-the-arrow-array-protocol"> |
| <span id="arrow-array-protocol"></span><h2>Controlling conversion to <code class="docutils literal notranslate"><span class="pre">pyarrow.Array</span></code> with the <code class="docutils literal notranslate"><span class="pre">__arrow_array__</span></code> protocol<a class="headerlink" href="#controlling-conversion-to-pyarrow-array-with-the-arrow-array-protocol" title="Link to this heading">#</a></h2> |
| <p>The <a class="reference internal" href="generated/pyarrow.array.html#pyarrow.array" title="pyarrow.array"><code class="xref py py-func docutils literal notranslate"><span class="pre">pyarrow.array()</span></code></a> function has built-in support for Python sequences, |
| numpy arrays and pandas 1D objects (Series, Index, Categorical, ..) to convert |
| those to Arrow arrays. This can be extended for other array-like objects |
| by implementing the <code class="docutils literal notranslate"><span class="pre">__arrow_array__</span></code> method (similar to numpy’s <code class="docutils literal notranslate"><span class="pre">__array__</span></code> |
| protocol).</p> |
| <p>For example, to support conversion of your duck array class to an Arrow array, |
| define the <code class="docutils literal notranslate"><span class="pre">__arrow_array__</span></code> method to return an Arrow array:</p> |
| <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">MyDuckArray</span><span class="p">:</span> |
| |
| <span class="o">...</span> |
| |
| <span class="k">def</span><span class="w"> </span><span class="nf">__arrow_array__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> |
| <span class="c1"># convert the underlying array values to a PyArrow Array</span> |
| <span class="kn">import</span><span class="w"> </span><span class="nn">pyarrow</span> |
| <span class="k">return</span> <span class="n">pyarrow</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="o">...</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="nb">type</span><span class="p">)</span> |
| </pre></div> |
| </div> |
| <p>The <code class="docutils literal notranslate"><span class="pre">__arrow_array__</span></code> method takes an optional <code class="docutils literal notranslate"><span class="pre">type</span></code> keyword which is passed |
| through from <a class="reference internal" href="generated/pyarrow.array.html#pyarrow.array" title="pyarrow.array"><code class="xref py py-func docutils literal notranslate"><span class="pre">pyarrow.array()</span></code></a>. The method is allowed to return either |
| a <a class="reference internal" href="generated/pyarrow.Array.html#pyarrow.Array" title="pyarrow.Array"><code class="xref py py-class docutils literal notranslate"><span class="pre">Array</span></code></a> or a <a class="reference internal" href="generated/pyarrow.ChunkedArray.html#pyarrow.ChunkedArray" title="pyarrow.ChunkedArray"><code class="xref py py-class docutils literal notranslate"><span class="pre">ChunkedArray</span></code></a>.</p> |
| <div class="admonition note"> |
| <p class="admonition-title">Note</p> |
| <p>For a more general way to control the conversion of Python objects to Arrow |
| data consider the <a class="reference internal" href="../format/CDataInterface/PyCapsuleInterface.html"><span class="doc">The Arrow PyCapsule Interface</span></a>. It is |
| not specific to PyArrow and supports converting other objects such as tables |
| and schemas.</p> |
| </div> |
| </section> |
| <section id="defining-extension-types-user-defined-types"> |
| <h2>Defining extension types (“user-defined types”)<a class="headerlink" href="#defining-extension-types-user-defined-types" title="Link to this heading">#</a></h2> |
| <p>Arrow affords a notion of extension types which allow users to annotate data |
| types with additional semantics. This allows developers both to |
| specify custom serialization and deserialization routines (for example, |
| to <a class="reference internal" href="#custom-scalar-conversion"><span class="std std-ref">Python scalars</span></a> and |
| <a class="reference internal" href="#conversion-to-pandas"><span class="std std-ref">pandas</span></a>) and to more easily interpret data.</p> |
| <p>In Arrow, <a class="reference internal" href="../format/Columnar.html#format-metadata-extension-types"><span class="std std-ref">extension types</span></a> |
| are specified by annotating any of the built-in Arrow data types |
| (the “storage type”) with a custom type name and, optionally, a |
| bytestring that can be used to provide additional metadata (referred to as |
| “parameters” in this documentation). These appear as the |
| <code class="docutils literal notranslate"><span class="pre">ARROW:extension:name</span></code> and <code class="docutils literal notranslate"><span class="pre">ARROW:extension:metadata</span></code> keys in the |
| Field’s <code class="docutils literal notranslate"><span class="pre">custom_metadata</span></code>.</p> |
| <p>Note that since these annotations are part of the Arrow specification, |
| they can potentially be recognized by other (non-Python) Arrow consumers |
| such as PySpark.</p> |
| <p>PyArrow allows you to define extension types from Python by subclassing |
| <a class="reference internal" href="generated/pyarrow.ExtensionType.html#pyarrow.ExtensionType" title="pyarrow.ExtensionType"><code class="xref py py-class docutils literal notranslate"><span class="pre">ExtensionType</span></code></a> and giving the derived class its own extension name |
| and mechanism to (de)serialize any parameters. For example, we could define |
| a custom rational type for fractions which can be represented as a pair of |
| integers:</p> |
| <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">RationalType</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">ExtensionType</span><span class="p">):</span> |
| |
| <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_type</span><span class="p">:</span> <span class="n">pa</span><span class="o">.</span><span class="n">DataType</span><span class="p">):</span> |
| <span class="k">if</span> <span class="ow">not</span> <span class="n">pa</span><span class="o">.</span><span class="n">types</span><span class="o">.</span><span class="n">is_integer</span><span class="p">(</span><span class="n">data_type</span><span class="p">):</span> |
| <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"data_type must be an integer type not </span><span class="si">{</span><span class="n">data_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> |
| |
| <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span> |
| <span class="n">pa</span><span class="o">.</span><span class="n">struct</span><span class="p">(</span> |
| <span class="p">[</span> |
| <span class="p">(</span><span class="s2">"numer"</span><span class="p">,</span> <span class="n">data_type</span><span class="p">),</span> |
| <span class="p">(</span><span class="s2">"denom"</span><span class="p">,</span> <span class="n">data_type</span><span class="p">),</span> |
| <span class="p">],</span> |
| <span class="p">),</span> |
| <span class="s2">"my_package.rational"</span><span class="p">,</span> |
| <span class="p">)</span> |
| |
| <span class="k">def</span><span class="w"> </span><span class="nf">__arrow_ext_serialize__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bytes</span><span class="p">:</span> |
| <span class="c1"># No parameters are necessary</span> |
| <span class="k">return</span> <span class="sa">b</span><span class="s2">""</span> |
| |
| <span class="nd">@classmethod</span> |
| <span class="k">def</span><span class="w"> </span><span class="nf">__arrow_ext_deserialize__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">storage_type</span><span class="p">,</span> <span class="n">serialized</span><span class="p">):</span> |
| <span class="c1"># Sanity checks, not required but illustrate the method signature.</span> |
| <span class="k">assert</span> <span class="n">pa</span><span class="o">.</span><span class="n">types</span><span class="o">.</span><span class="n">is_struct</span><span class="p">(</span><span class="n">storage_type</span><span class="p">)</span> |
| <span class="k">assert</span> <span class="n">pa</span><span class="o">.</span><span class="n">types</span><span class="o">.</span><span class="n">is_integer</span><span class="p">(</span><span class="n">storage_type</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">)</span> |
| <span class="k">assert</span> <span class="n">storage_type</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">storage_type</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">type</span> |
| <span class="k">assert</span> <span class="n">serialized</span> <span class="o">==</span> <span class="sa">b</span><span class="s2">""</span> |
| |
| <span class="c1"># return an instance of this subclass</span> |
| <span class="k">return</span> <span class="n">RationalType</span><span class="p">(</span><span class="n">storage_type</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">)</span> |
| </pre></div> |
| </div> |
| <p>The special methods <code class="docutils literal notranslate"><span class="pre">__arrow_ext_serialize__</span></code> and <code class="docutils literal notranslate"><span class="pre">__arrow_ext_deserialize__</span></code> |
| define the serialization and deserialization of an extension type instance.</p> |
| <p>This can now be used to create arrays and tables holding the extension type:</p> |
| <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">rational_type</span> <span class="o">=</span> <span class="n">RationalType</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">int32</span><span class="p">())</span> |
| <span class="gp">>>> </span><span class="n">rational_type</span><span class="o">.</span><span class="n">extension_name</span> |
| <span class="go">'my_package.rational'</span> |
| <span class="gp">>>> </span><span class="n">rational_type</span><span class="o">.</span><span class="n">storage_type</span> |
| <span class="go">StructType(struct<numer: int32, denom: int32>)</span> |
| |
| <span class="gp">>>> </span><span class="n">storage_array</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">array</span><span class="p">(</span> |
| <span class="gp">... </span> <span class="p">[</span> |
| <span class="gp">... </span> <span class="p">{</span><span class="s2">"numer"</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span> <span class="s2">"denom"</span><span class="p">:</span> <span class="mi">17</span><span class="p">},</span> |
| <span class="gp">... </span> <span class="p">{</span><span class="s2">"numer"</span><span class="p">:</span> <span class="mi">20</span><span class="p">,</span> <span class="s2">"denom"</span><span class="p">:</span> <span class="mi">13</span><span class="p">},</span> |
| <span class="gp">... </span> <span class="p">],</span> |
| <span class="gp">... </span> <span class="nb">type</span><span class="o">=</span><span class="n">rational_type</span><span class="o">.</span><span class="n">storage_type</span><span class="p">,</span> |
| <span class="gp">... </span><span class="p">)</span> |
| <span class="gp">>>> </span><span class="n">arr</span> <span class="o">=</span> <span class="n">rational_type</span><span class="o">.</span><span class="n">wrap_array</span><span class="p">(</span><span class="n">storage_array</span><span class="p">)</span> |
| <span class="gp">>>> </span><span class="c1"># or equivalently</span> |
| <span class="gp">>>> </span><span class="n">arr</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">ExtensionArray</span><span class="o">.</span><span class="n">from_storage</span><span class="p">(</span><span class="n">rational_type</span><span class="p">,</span> <span class="n">storage_array</span><span class="p">)</span> |
| <span class="gp">>>> </span><span class="n">arr</span> |
| <span class="go"><pyarrow.lib.ExtensionArray object at 0x1067f5420></span> |
| <span class="go">-- is_valid: all not null</span> |
| <span class="go">-- child 0 type: int32</span> |
| <span class="go"> [</span> |
| <span class="go"> 10,</span> |
| <span class="go"> 20</span> |
| <span class="go"> ]</span> |
| <span class="go">-- child 1 type: int32</span> |
| <span class="go"> [</span> |
| <span class="go"> 17,</span> |
| <span class="go"> 13</span> |
| <span class="go"> ]</span> |
| </pre></div> |
| </div> |
| <p>This array can be included in RecordBatches, sent over IPC and received in |
| another Python process. The receiving process must explicitly register the |
| extension type for deserialization, otherwise it will fall back to the |
| storage type:</p> |
| <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">pa</span><span class="o">.</span><span class="n">register_extension_type</span><span class="p">(</span><span class="n">RationalType</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">int32</span><span class="p">()))</span> |
| </pre></div> |
| </div> |
| <p>For example, creating a RecordBatch and writing it to a stream using the |
| IPC protocol:</p> |
| <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">batch</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">RecordBatch</span><span class="o">.</span><span class="n">from_arrays</span><span class="p">([</span><span class="n">arr</span><span class="p">],</span> <span class="p">[</span><span class="s2">"ext"</span><span class="p">])</span> |
| <span class="gp">>>> </span><span class="n">sink</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">BufferOutputStream</span><span class="p">()</span> |
| <span class="gp">>>> </span><span class="k">with</span> <span class="n">pa</span><span class="o">.</span><span class="n">RecordBatchStreamWriter</span><span class="p">(</span><span class="n">sink</span><span class="p">,</span> <span class="n">batch</span><span class="o">.</span><span class="n">schema</span><span class="p">)</span> <span class="k">as</span> <span class="n">writer</span><span class="p">:</span> |
| <span class="gp">... </span> <span class="n">writer</span><span class="o">.</span><span class="n">write_batch</span><span class="p">(</span><span class="n">batch</span><span class="p">)</span> |
| <span class="gp">>>> </span><span class="n">buf</span> <span class="o">=</span> <span class="n">sink</span><span class="o">.</span><span class="n">getvalue</span><span class="p">()</span> |
| </pre></div> |
| </div> |
| <p>and then reading it back yields the proper type:</p> |
| <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="k">with</span> <span class="n">pa</span><span class="o">.</span><span class="n">ipc</span><span class="o">.</span><span class="n">open_stream</span><span class="p">(</span><span class="n">buf</span><span class="p">)</span> <span class="k">as</span> <span class="n">reader</span><span class="p">:</span> |
| <span class="gp">... </span> <span class="n">result</span> <span class="o">=</span> <span class="n">reader</span><span class="o">.</span><span class="n">read_all</span><span class="p">()</span> |
| <span class="gp">>>> </span><span class="n">result</span><span class="o">.</span><span class="n">column</span><span class="p">(</span><span class="s2">"ext"</span><span class="p">)</span><span class="o">.</span><span class="n">type</span> |
| <span class="go">RationalType(StructType(struct<numer: int32, denom: int32>))</span> |
| </pre></div> |
| </div> |
| <p>Further, note that while we registered the concrete type |
| <code class="docutils literal notranslate"><span class="pre">RationalType(pa.int32())</span></code>, the same extension name |
| (<code class="docutils literal notranslate"><span class="pre">"my_package.rational"</span></code>) is used by <code class="docutils literal notranslate"><span class="pre">RationalType(integer_type)</span></code> |
| for <em>all</em> Arrow integer types. As such, the above code also allows users to |
| (de)serialize these data types:</p> |
| <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">big_rational_type</span> <span class="o">=</span> <span class="n">RationalType</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">int64</span><span class="p">())</span> |
| <span class="gp">>>> </span><span class="n">storage_array</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">array</span><span class="p">(</span> |
| <span class="gp">... </span> <span class="p">[</span> |
| <span class="gp">... </span> <span class="p">{</span><span class="s2">"numer"</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span> <span class="s2">"denom"</span><span class="p">:</span> <span class="mi">17</span><span class="p">},</span> |
| <span class="gp">... </span> <span class="p">{</span><span class="s2">"numer"</span><span class="p">:</span> <span class="mi">20</span><span class="p">,</span> <span class="s2">"denom"</span><span class="p">:</span> <span class="mi">13</span><span class="p">},</span> |
| <span class="gp">... </span> <span class="p">],</span> |
| <span class="gp">... </span> <span class="nb">type</span><span class="o">=</span><span class="n">big_rational_type</span><span class="o">.</span><span class="n">storage_type</span><span class="p">,</span> |
| <span class="gp">... </span><span class="p">)</span> |
| <span class="gp">>>> </span><span class="n">arr</span> <span class="o">=</span> <span class="n">big_rational_type</span><span class="o">.</span><span class="n">wrap_array</span><span class="p">(</span><span class="n">storage_array</span><span class="p">)</span> |
| <span class="gp">>>> </span><span class="n">batch</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">RecordBatch</span><span class="o">.</span><span class="n">from_arrays</span><span class="p">([</span><span class="n">arr</span><span class="p">],</span> <span class="p">[</span><span class="s2">"ext"</span><span class="p">])</span> |
| <span class="gp">>>> </span><span class="n">sink</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">BufferOutputStream</span><span class="p">()</span> |
| <span class="gp">>>> </span><span class="k">with</span> <span class="n">pa</span><span class="o">.</span><span class="n">RecordBatchStreamWriter</span><span class="p">(</span><span class="n">sink</span><span class="p">,</span> <span class="n">batch</span><span class="o">.</span><span class="n">schema</span><span class="p">)</span> <span class="k">as</span> <span class="n">writer</span><span class="p">:</span> |
| <span class="gp">... </span> <span class="n">writer</span><span class="o">.</span><span class="n">write_batch</span><span class="p">(</span><span class="n">batch</span><span class="p">)</span> |
| <span class="gp">>>> </span><span class="n">buf</span> <span class="o">=</span> <span class="n">sink</span><span class="o">.</span><span class="n">getvalue</span><span class="p">()</span> |
| <span class="gp">>>> </span><span class="k">with</span> <span class="n">pa</span><span class="o">.</span><span class="n">ipc</span><span class="o">.</span><span class="n">open_stream</span><span class="p">(</span><span class="n">buf</span><span class="p">)</span> <span class="k">as</span> <span class="n">reader</span><span class="p">:</span> |
| <span class="gp">... </span> <span class="n">result</span> <span class="o">=</span> <span class="n">reader</span><span class="o">.</span><span class="n">read_all</span><span class="p">()</span> |
| <span class="gp">>>> </span><span class="n">result</span><span class="o">.</span><span class="n">column</span><span class="p">(</span><span class="s2">"ext"</span><span class="p">)</span><span class="o">.</span><span class="n">type</span> |
| <span class="go">RationalType(StructType(struct<numer: int64, denom: int64>))</span> |
| </pre></div> |
| </div> |
| <p>The receiving application doesn’t need to be Python but can still recognize |
| the extension type as a “my_package.rational” type if it has implemented its own |
| extension type to receive it. If the type is not registered in the receiving |
| application, it will fall back to the storage type.</p> |
| <section id="parameterized-extension-type"> |
| <h3>Parameterized extension type<a class="headerlink" href="#parameterized-extension-type" title="Link to this heading">#</a></h3> |
| <p>The above example illustrated how to construct an extension type that requires |
| no additional metadata beyond its storage type. But Arrow also provides more |
| flexible, parameterized extension types.</p> |
| <p>The example given here implements an extension type for the <a class="reference external" href="https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#time-span-representation">pandas “period” |
| data type</a>, |
| representing time spans (e.g., a frequency of a day, a month, a quarter, etc). |
| It is stored as an int64 array which is interpreted as the number of time spans |
| of the given frequency since 1970.</p> |
| <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">PeriodType</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">ExtensionType</span><span class="p">):</span> |
| |
| <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">freq</span><span class="p">):</span> |
| <span class="c1"># attributes need to be set first before calling</span> |
| <span class="c1"># super init (as that calls serialize)</span> |
| <span class="bp">self</span><span class="o">.</span><span class="n">_freq</span> <span class="o">=</span> <span class="n">freq</span> |
| <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">int64</span><span class="p">(),</span> <span class="s2">"my_package.period"</span><span class="p">)</span> |
| |
| <span class="nd">@property</span> |
| <span class="k">def</span><span class="w"> </span><span class="nf">freq</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
| <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_freq</span> |
| |
| <span class="k">def</span><span class="w"> </span><span class="nf">__arrow_ext_serialize__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
| <span class="k">return</span> <span class="s2">"freq=</span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">freq</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">()</span> |
| |
| <span class="nd">@classmethod</span> |
| <span class="k">def</span><span class="w"> </span><span class="nf">__arrow_ext_deserialize__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">storage_type</span><span class="p">,</span> <span class="n">serialized</span><span class="p">):</span> |
| <span class="c1"># Return an instance of this subclass given the serialized</span> |
| <span class="c1"># metadata.</span> |
| <span class="n">serialized</span> <span class="o">=</span> <span class="n">serialized</span><span class="o">.</span><span class="n">decode</span><span class="p">()</span> |
| <span class="k">assert</span> <span class="n">serialized</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"freq="</span><span class="p">)</span> |
| <span class="n">freq</span> <span class="o">=</span> <span class="n">serialized</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"="</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> |
| <span class="k">return</span> <span class="n">PeriodType</span><span class="p">(</span><span class="n">freq</span><span class="p">)</span> |
| </pre></div> |
| </div> |
| <p>Here, we ensure to store all information in the serialized metadata that is |
| needed to reconstruct the instance (in the <code class="docutils literal notranslate"><span class="pre">__arrow_ext_deserialize__</span></code> class |
| method), in this case the frequency string.</p> |
| <p>Note that, once created, the data type instance is considered immutable. |
| In the example above, the <code class="docutils literal notranslate"><span class="pre">freq</span></code> parameter is therefore stored in a private |
| attribute with a public read-only property to access it.</p> |
| </section> |
| <section id="custom-extension-array-class"> |
| <h3>Custom extension array class<a class="headerlink" href="#custom-extension-array-class" title="Link to this heading">#</a></h3> |
| <p>By default, all arrays with an extension type are constructed or deserialized into |
| a built-in <a class="reference internal" href="generated/pyarrow.ExtensionArray.html#pyarrow.ExtensionArray" title="pyarrow.ExtensionArray"><code class="xref py py-class docutils literal notranslate"><span class="pre">ExtensionArray</span></code></a> object. Nevertheless, one could want to subclass |
| <a class="reference internal" href="generated/pyarrow.ExtensionArray.html#pyarrow.ExtensionArray" title="pyarrow.ExtensionArray"><code class="xref py py-class docutils literal notranslate"><span class="pre">ExtensionArray</span></code></a> in order to add some custom logic specific to the extension |
| type. Arrow allows to do so by adding a special method <code class="docutils literal notranslate"><span class="pre">__arrow_ext_class__</span></code> to the |
| definition of the extension type.</p> |
| <p>For instance, let us consider the example from the <a class="reference external" href="https://docs.scipy.org/doc/numpy-1.13.0/user/quickstart.html">Numpy Quickstart</a> of points in 3D space. |
| We can store these as a fixed-size list, where we wish to be able to extract |
| the data as a 2-D Numpy array <code class="docutils literal notranslate"><span class="pre">(N,</span> <span class="pre">3)</span></code> without any copy:</p> |
| <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Point3DArray</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">ExtensionArray</span><span class="p">):</span> |
| <span class="k">def</span><span class="w"> </span><span class="nf">to_numpy_array</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
| <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">flatten</span><span class="p">()</span><span class="o">.</span><span class="n">to_numpy</span><span class="p">()</span><span class="o">.</span><span class="n">reshape</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span> |
| |
| |
| <span class="k">class</span><span class="w"> </span><span class="nc">Point3DType</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">ExtensionType</span><span class="p">):</span> |
| <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
| <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">list_</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">float32</span><span class="p">(),</span> <span class="mi">3</span><span class="p">),</span> <span class="s2">"my_package.Point3DType"</span><span class="p">)</span> |
| |
| <span class="k">def</span><span class="w"> </span><span class="nf">__arrow_ext_serialize__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
| <span class="k">return</span> <span class="sa">b</span><span class="s2">""</span> |
| |
| <span class="nd">@classmethod</span> |
| <span class="k">def</span><span class="w"> </span><span class="nf">__arrow_ext_deserialize__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">storage_type</span><span class="p">,</span> <span class="n">serialized</span><span class="p">):</span> |
| <span class="k">return</span> <span class="n">Point3DType</span><span class="p">()</span> |
| |
| <span class="k">def</span><span class="w"> </span><span class="nf">__arrow_ext_class__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
| <span class="k">return</span> <span class="n">Point3DArray</span> |
| </pre></div> |
| </div> |
| <p>Arrays built using this extension type now have the expected custom array class:</p> |
| <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">storage</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span> <span class="p">[</span><span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">]],</span> <span class="n">pa</span><span class="o">.</span><span class="n">list_</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">float32</span><span class="p">(),</span> <span class="mi">3</span><span class="p">))</span> |
| <span class="gp">>>> </span><span class="n">arr</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">ExtensionArray</span><span class="o">.</span><span class="n">from_storage</span><span class="p">(</span><span class="n">Point3DType</span><span class="p">(),</span> <span class="n">storage</span><span class="p">)</span> |
| <span class="gp">>>> </span><span class="n">arr</span> |
| <span class="go"><__main__.Point3DArray object at 0x7f40dea80670></span> |
| <span class="go">[</span> |
| <span class="go"> [</span> |
| <span class="go"> 1,</span> |
| <span class="go"> 2,</span> |
| <span class="go"> 3</span> |
| <span class="go"> ],</span> |
| <span class="go"> [</span> |
| <span class="go"> 4,</span> |
| <span class="go"> 5,</span> |
| <span class="go"> 6</span> |
| <span class="go"> ]</span> |
| <span class="go">]</span> |
| </pre></div> |
| </div> |
| <p>The additional methods in the extension class are then available to the user:</p> |
| <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">arr</span><span class="o">.</span><span class="n">to_numpy_array</span><span class="p">()</span> |
| <span class="go">array([[1., 2., 3.],</span> |
| <span class="go"> [4., 5., 6.]], dtype=float32)</span> |
| </pre></div> |
| </div> |
| <p>This array can be sent over IPC, received in another Python process, and the custom |
| extension array class will be preserved (as long as the receiving process registers |
| the extension type using <a class="reference internal" href="generated/pyarrow.register_extension_type.html#pyarrow.register_extension_type" title="pyarrow.register_extension_type"><code class="xref py py-func docutils literal notranslate"><span class="pre">register_extension_type()</span></code></a> before reading the IPC data).</p> |
| </section> |
| <section id="custom-scalar-conversion"> |
| <span id="id1"></span><h3>Custom scalar conversion<a class="headerlink" href="#custom-scalar-conversion" title="Link to this heading">#</a></h3> |
| <p>If you want scalars of your custom extension type to convert to a custom type when |
| <a class="reference internal" href="generated/pyarrow.ExtensionScalar.html#pyarrow.ExtensionScalar.as_py" title="pyarrow.ExtensionScalar.as_py"><code class="xref py py-meth docutils literal notranslate"><span class="pre">ExtensionScalar.as_py()</span></code></a> is called, you can override the |
| <a class="reference internal" href="generated/pyarrow.ExtensionScalar.html#pyarrow.ExtensionScalar.as_py" title="pyarrow.ExtensionScalar.as_py"><code class="xref py py-meth docutils literal notranslate"><span class="pre">ExtensionScalar.as_py()</span></code></a> method by subclassing <a class="reference internal" href="generated/pyarrow.ExtensionScalar.html#pyarrow.ExtensionScalar" title="pyarrow.ExtensionScalar"><code class="xref py py-class docutils literal notranslate"><span class="pre">ExtensionScalar</span></code></a>. |
| For example, if we wanted the above example 3D point type to return a custom |
| 3D point class instead of a list, we would implement:</p> |
| <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">collections</span><span class="w"> </span><span class="kn">import</span> <span class="n">namedtuple</span> |
| |
| <span class="n">Point3D</span> <span class="o">=</span> <span class="n">namedtuple</span><span class="p">(</span><span class="s2">"Point3D"</span><span class="p">,</span> <span class="p">[</span><span class="s2">"x"</span><span class="p">,</span> <span class="s2">"y"</span><span class="p">,</span> <span class="s2">"z"</span><span class="p">])</span> |
| |
| <span class="k">class</span><span class="w"> </span><span class="nc">Point3DScalar</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">ExtensionScalar</span><span class="p">):</span> |
| <span class="k">def</span><span class="w"> </span><span class="nf">as_py</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Point3D</span><span class="p">:</span> |
| <span class="k">return</span> <span class="n">Point3D</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">as_py</span><span class="p">())</span> |
| |
| <span class="k">class</span><span class="w"> </span><span class="nc">Point3DType</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">ExtensionType</span><span class="p">):</span> |
| <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
| <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">list_</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">float32</span><span class="p">(),</span> <span class="mi">3</span><span class="p">),</span> <span class="s2">"my_package.Point3DType"</span><span class="p">)</span> |
| |
| <span class="k">def</span><span class="w"> </span><span class="nf">__arrow_ext_serialize__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
| <span class="k">return</span> <span class="sa">b</span><span class="s2">""</span> |
| |
| <span class="nd">@classmethod</span> |
| <span class="k">def</span><span class="w"> </span><span class="nf">__arrow_ext_deserialize__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">storage_type</span><span class="p">,</span> <span class="n">serialized</span><span class="p">):</span> |
| <span class="k">return</span> <span class="n">Point3DType</span><span class="p">()</span> |
| |
| <span class="k">def</span><span class="w"> </span><span class="nf">__arrow_ext_scalar_class__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
| <span class="k">return</span> <span class="n">Point3DScalar</span> |
| </pre></div> |
| </div> |
| <p>Arrays built using this extension type now provide scalars that convert to our <code class="docutils literal notranslate"><span class="pre">Point3D</span></code> class:</p> |
| <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">storage</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span> <span class="p">[</span><span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">]],</span> <span class="n">pa</span><span class="o">.</span><span class="n">list_</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">float32</span><span class="p">(),</span> <span class="mi">3</span><span class="p">))</span> |
| <span class="gp">>>> </span><span class="n">arr</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">ExtensionArray</span><span class="o">.</span><span class="n">from_storage</span><span class="p">(</span><span class="n">Point3DType</span><span class="p">(),</span> <span class="n">storage</span><span class="p">)</span> |
| <span class="gp">>>> </span><span class="n">arr</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">as_py</span><span class="p">()</span> |
| <span class="go">Point3D(x=1.0, y=2.0, z=3.0)</span> |
| |
| <span class="gp">>>> </span><span class="n">arr</span><span class="o">.</span><span class="n">to_pylist</span><span class="p">()</span> |
| <span class="go">[Point3D(x=1.0, y=2.0, z=3.0), Point3D(x=4.0, y=5.0, z=6.0)]</span> |
| </pre></div> |
| </div> |
| </section> |
| <section id="conversion-to-pandas"> |
| <span id="id2"></span><h3>Conversion to pandas<a class="headerlink" href="#conversion-to-pandas" title="Link to this heading">#</a></h3> |
| <p>The conversion to pandas (in <a class="reference internal" href="generated/pyarrow.Table.html#pyarrow.Table.to_pandas" title="pyarrow.Table.to_pandas"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Table.to_pandas()</span></code></a>) of columns with an |
| extension type can controlled in case there is a corresponding |
| <a class="reference external" href="https://pandas.pydata.org/pandas-docs/stable/development/extending.html#extension-types">pandas extension array</a> |
| for your extension type.</p> |
| <p>For this, the <a class="reference internal" href="generated/pyarrow.ExtensionType.html#pyarrow.ExtensionType.to_pandas_dtype" title="pyarrow.ExtensionType.to_pandas_dtype"><code class="xref py py-meth docutils literal notranslate"><span class="pre">ExtensionType.to_pandas_dtype()</span></code></a> method needs to be |
| implemented, and should return a <code class="docutils literal notranslate"><span class="pre">pandas.api.extensions.ExtensionDtype</span></code> |
| subclass instance.</p> |
| <p>Using the pandas period type from above as example, this would look like:</p> |
| <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">PeriodType</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">ExtensionType</span><span class="p">):</span> |
| <span class="o">...</span> |
| |
| <span class="k">def</span><span class="w"> </span><span class="nf">to_pandas_dtype</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
| <span class="kn">import</span><span class="w"> </span><span class="nn">pandas</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">pd</span> |
| <span class="k">return</span> <span class="n">pd</span><span class="o">.</span><span class="n">PeriodDtype</span><span class="p">(</span><span class="n">freq</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">freq</span><span class="p">)</span> |
| </pre></div> |
| </div> |
| <p>Secondly, the pandas <code class="docutils literal notranslate"><span class="pre">ExtensionDtype</span></code> on its turn needs to have the |
| <code class="docutils literal notranslate"><span class="pre">__from_arrow__</span></code> method implemented: a method that given a PyArrow Array |
| or ChunkedArray of the extension type can construct the corresponding |
| pandas <code class="docutils literal notranslate"><span class="pre">ExtensionArray</span></code>. This method should have the following signature:</p> |
| <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">MyExtensionDtype</span><span class="p">(</span><span class="n">pd</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">extensions</span><span class="o">.</span><span class="n">ExtensionDtype</span><span class="p">):</span> |
| <span class="o">...</span> |
| |
| <span class="k">def</span><span class="w"> </span><span class="nf">__from_arrow__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">array</span><span class="p">:</span> <span class="n">pyarrow</span><span class="o">.</span><span class="n">Array</span><span class="o">/</span><span class="n">ChunkedArray</span><span class="p">)</span> <span class="o">-></span> <span class="n">pandas</span><span class="o">.</span><span class="n">ExtensionArray</span><span class="p">:</span> |
| <span class="o">...</span> |
| </pre></div> |
| </div> |
| <p>This way, you can control the conversion of a PyArrow <code class="docutils literal notranslate"><span class="pre">Array</span></code> of your PyArrow |
| extension type to a pandas <code class="docutils literal notranslate"><span class="pre">ExtensionArray</span></code> that can be stored in a DataFrame.</p> |
| </section> |
| <section id="canonical-extension-types"> |
| <h3>Canonical extension types<a class="headerlink" href="#canonical-extension-types" title="Link to this heading">#</a></h3> |
| <p>You can find the official list of canonical extension types in the |
| <a class="reference internal" href="../format/CanonicalExtensions.html#format-canonical-extensions"><span class="std std-ref">Canonical Extension Types</span></a> section. Here we add examples on how to |
| use them in PyArrow.</p> |
| <section id="fixed-size-tensor"> |
| <h4>Fixed size tensor<a class="headerlink" href="#fixed-size-tensor" title="Link to this heading">#</a></h4> |
| <p>To create an array of tensors with equal shape (fixed shape tensor array) we |
| first need to define a fixed shape tensor extension type with value type |
| and shape:</p> |
| <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">tensor_type</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">fixed_shape_tensor</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">int32</span><span class="p">(),</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> |
| </pre></div> |
| </div> |
| <p>Then we need the storage array with <a class="reference internal" href="generated/pyarrow.list_.html#pyarrow.list_" title="pyarrow.list_"><code class="xref py py-func docutils literal notranslate"><span class="pre">pyarrow.list_()</span></code></a> type where <code class="docutils literal notranslate"><span class="pre">value_type`</span></code> |
| is the fixed shape tensor value type and list size is a product of <code class="docutils literal notranslate"><span class="pre">tensor_type</span></code> |
| shape elements. Then we can create an array of tensors with |
| <code class="docutils literal notranslate"><span class="pre">pa.ExtensionArray.from_storage()</span></code> method:</p> |
| <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">arr</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="mi">10</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="mi">40</span><span class="p">],</span> <span class="p">[</span><span class="mi">100</span><span class="p">,</span> <span class="mi">200</span><span class="p">,</span> <span class="mi">300</span><span class="p">,</span> <span class="mi">400</span><span class="p">]]</span> |
| <span class="gp">>>> </span><span class="n">storage</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">pa</span><span class="o">.</span><span class="n">list_</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">int32</span><span class="p">(),</span> <span class="mi">4</span><span class="p">))</span> |
| <span class="gp">>>> </span><span class="n">tensor_array</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">ExtensionArray</span><span class="o">.</span><span class="n">from_storage</span><span class="p">(</span><span class="n">tensor_type</span><span class="p">,</span> <span class="n">storage</span><span class="p">)</span> |
| </pre></div> |
| </div> |
| <p>We can also create another array of tensors with different value type:</p> |
| <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">tensor_type_2</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">fixed_shape_tensor</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">float32</span><span class="p">(),</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> |
| <span class="gp">>>> </span><span class="n">storage_2</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">pa</span><span class="o">.</span><span class="n">list_</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">float32</span><span class="p">(),</span> <span class="mi">4</span><span class="p">))</span> |
| <span class="gp">>>> </span><span class="n">tensor_array_2</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">ExtensionArray</span><span class="o">.</span><span class="n">from_storage</span><span class="p">(</span><span class="n">tensor_type_2</span><span class="p">,</span> <span class="n">storage_2</span><span class="p">)</span> |
| </pre></div> |
| </div> |
| <p>Extension arrays can be used as columns in <code class="docutils literal notranslate"><span class="pre">pyarrow.Table</span></code> or |
| <code class="docutils literal notranslate"><span class="pre">pyarrow.RecordBatch</span></code>:</p> |
| <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">data</span> <span class="o">=</span> <span class="p">[</span> |
| <span class="gp">... </span> <span class="n">pa</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]),</span> |
| <span class="gp">... </span> <span class="n">pa</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="s2">"foo"</span><span class="p">,</span> <span class="s2">"bar"</span><span class="p">,</span> <span class="kc">None</span><span class="p">]),</span> |
| <span class="gp">... </span> <span class="n">pa</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="kc">True</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">True</span><span class="p">]),</span> |
| <span class="gp">... </span> <span class="n">tensor_array</span><span class="p">,</span> |
| <span class="gp">... </span> <span class="n">tensor_array_2</span> |
| <span class="gp">... </span><span class="p">]</span> |
| <span class="gp">>>> </span><span class="n">my_schema</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">schema</span><span class="p">([(</span><span class="s2">"f0"</span><span class="p">,</span> <span class="n">pa</span><span class="o">.</span><span class="n">int8</span><span class="p">()),</span> |
| <span class="gp">... </span> <span class="p">(</span><span class="s2">"f1"</span><span class="p">,</span> <span class="n">pa</span><span class="o">.</span><span class="n">string</span><span class="p">()),</span> |
| <span class="gp">... </span> <span class="p">(</span><span class="s2">"f2"</span><span class="p">,</span> <span class="n">pa</span><span class="o">.</span><span class="n">bool_</span><span class="p">()),</span> |
| <span class="gp">... </span> <span class="p">(</span><span class="s2">"tensors_int"</span><span class="p">,</span> <span class="n">tensor_type</span><span class="p">),</span> |
| <span class="gp">... </span> <span class="p">(</span><span class="s2">"tensors_float"</span><span class="p">,</span> <span class="n">tensor_type_2</span><span class="p">)])</span> |
| <span class="gp">>>> </span><span class="n">table</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">Table</span><span class="o">.</span><span class="n">from_arrays</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">my_schema</span><span class="p">)</span> |
| <span class="gp">>>> </span><span class="n">table</span> |
| <span class="go">pyarrow.Table</span> |
| <span class="go">f0: int8</span> |
| <span class="go">f1: string</span> |
| <span class="go">f2: bool</span> |
| <span class="go">tensors_int: extension<arrow.fixed_shape_tensor[value_type=int32, shape=[2,2]]></span> |
| <span class="go">tensors_float: extension<arrow.fixed_shape_tensor[value_type=float, shape=[2,2]]></span> |
| <span class="go">----</span> |
| <span class="go">f0: [[1,2,3]]</span> |
| <span class="go">f1: [["foo","bar",null]]</span> |
| <span class="go">f2: [[true,null,true]]</span> |
| <span class="go">tensors_int: [[[1,2,3,4],[10,20,30,40],[100,200,300,400]]]</span> |
| <span class="go">tensors_float: [[[1,2,3,4],[10,20,30,40],[100,200,300,400]]]</span> |
| </pre></div> |
| </div> |
| <p>We can also convert a tensor array to a single multi-dimensional numpy ndarray. |
| With the conversion the length of the arrow array becomes the first dimension |
| in the numpy ndarray:</p> |
| <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">numpy_tensor</span> <span class="o">=</span> <span class="n">tensor_array_2</span><span class="o">.</span><span class="n">to_numpy_ndarray</span><span class="p">()</span> |
| <span class="gp">>>> </span><span class="n">numpy_tensor</span> |
| <span class="go">array([[[ 1., 2.],</span> |
| <span class="go"> [ 3., 4.]],</span> |
| <span class="go"> [[ 10., 20.],</span> |
| <span class="go"> [ 30., 40.]],</span> |
| <span class="go"> [[100., 200.],</span> |
| <span class="go"> [300., 400.]]])</span> |
| <span class="go"> >>> numpy_tensor.shape</span> |
| <span class="go">(3, 2, 2)</span> |
| </pre></div> |
| </div> |
| <div class="admonition note"> |
| <p class="admonition-title">Note</p> |
| <p>Both optional parameters, <code class="docutils literal notranslate"><span class="pre">permutation</span></code> and <code class="docutils literal notranslate"><span class="pre">dim_names</span></code>, are meant to provide the user |
| with the information about the logical layout of the data compared to the physical layout.</p> |
| <p>The conversion to numpy ndarray is only possible for trivial permutations (<code class="docutils literal notranslate"><span class="pre">None</span></code> or |
| <code class="docutils literal notranslate"><span class="pre">[0,</span> <span class="pre">1,</span> <span class="pre">...</span> <span class="pre">N-1]</span></code> where <code class="docutils literal notranslate"><span class="pre">N</span></code> is the number of tensor dimensions).</p> |
| </div> |
| <p>And also the other way around, we can convert a numpy ndarray to a fixed shape tensor array:</p> |
| <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">pa</span><span class="o">.</span><span class="n">FixedShapeTensorArray</span><span class="o">.</span><span class="n">from_numpy_ndarray</span><span class="p">(</span><span class="n">numpy_tensor</span><span class="p">)</span> |
| <span class="go"><pyarrow.lib.FixedShapeTensorArray object at ...></span> |
| <span class="go">[</span> |
| <span class="go"> [</span> |
| <span class="go"> 1,</span> |
| <span class="go"> 2,</span> |
| <span class="go"> 3,</span> |
| <span class="go"> 4</span> |
| <span class="go"> ],</span> |
| <span class="go"> [</span> |
| <span class="go"> 10,</span> |
| <span class="go"> 20,</span> |
| <span class="go"> 30,</span> |
| <span class="go"> 40</span> |
| <span class="go"> ],</span> |
| <span class="go"> [</span> |
| <span class="go"> 100,</span> |
| <span class="go"> 200,</span> |
| <span class="go"> 300,</span> |
| <span class="go"> 400</span> |
| <span class="go"> ]</span> |
| <span class="go">]</span> |
| </pre></div> |
| </div> |
| <p>With the conversion the first dimension of the ndarray becomes the length of the PyArrow extension |
| array. We can see in the example that ndarray of shape <code class="docutils literal notranslate"><span class="pre">(3,</span> <span class="pre">2,</span> <span class="pre">2)</span></code> becomes an arrow array of |
| length 3 with tensor elements of shape <code class="docutils literal notranslate"><span class="pre">(2,</span> <span class="pre">2)</span></code>.</p> |
| <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># ndarray of shape (3, 2, 2)</span> |
| <span class="o">>>></span> <span class="n">numpy_tensor</span><span class="o">.</span><span class="n">shape</span> |
| <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> |
| |
| <span class="c1"># arrow array of length 3 with tensor elements of shape (2, 2)</span> |
| <span class="o">>>></span> <span class="n">pyarrow_tensor_array</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">FixedShapeTensorArray</span><span class="o">.</span><span class="n">from_numpy_ndarray</span><span class="p">(</span><span class="n">numpy_tensor</span><span class="p">)</span> |
| <span class="o">>>></span> <span class="nb">len</span><span class="p">(</span><span class="n">pyarrow_tensor_array</span><span class="p">)</span> |
| <span class="mi">3</span> |
| <span class="o">>>></span> <span class="n">pyarrow_tensor_array</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">shape</span> |
| <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">]</span> |
| </pre></div> |
| </div> |
| <p>The extension type can also have <code class="docutils literal notranslate"><span class="pre">permutation</span></code> and <code class="docutils literal notranslate"><span class="pre">dim_names</span></code> defined. For |
| example</p> |
| <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">tensor_type</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">fixed_shape_tensor</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">float64</span><span class="p">(),</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span> <span class="n">permutation</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span> |
| </pre></div> |
| </div> |
| <p>or</p> |
| <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">tensor_type</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">fixed_shape_tensor</span><span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">bool_</span><span class="p">(),</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span> <span class="n">dim_names</span><span class="o">=</span><span class="p">[</span><span class="s2">"C"</span><span class="p">,</span> <span class="s2">"H"</span><span class="p">,</span> <span class="s2">"W"</span><span class="p">])</span> |
| </pre></div> |
| </div> |
| <p>for <code class="docutils literal notranslate"><span class="pre">NCHW</span></code> format where:</p> |
| <ul class="simple"> |
| <li><p>N: number of images which is in our case the length of an array and is always on |
| the first dimension</p></li> |
| <li><p>C: number of channels of the image</p></li> |
| <li><p>H: height of the image</p></li> |
| <li><p>W: width of the image</p></li> |
| </ul> |
| </section> |
| </section> |
| </section> |
| </section> |
| |
| |
| </article> |
| |
| |
| |
| |
| |
| <footer class="prev-next-footer d-print-none"> |
| |
| <div class="prev-next-area"> |
| <a class="left-prev" |
| href="flight.html" |
| title="previous page"> |
| <i class="fa-solid fa-angle-left"></i> |
| <div class="prev-next-info"> |
| <p class="prev-next-subtitle">previous</p> |
| <p class="prev-next-title">Arrow Flight RPC</p> |
| </div> |
| </a> |
| <a class="right-next" |
| href="integration.html" |
| title="next page"> |
| <div class="prev-next-info"> |
| <p class="prev-next-subtitle">next</p> |
| <p class="prev-next-title">PyArrow Integrations</p> |
| </div> |
| <i class="fa-solid fa-angle-right"></i> |
| </a> |
| </div> |
| </footer> |
| |
| </div> |
| |
| |
| |
| <dialog id="pst-secondary-sidebar-modal"></dialog> |
| <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> |
| |
| |
| <div class="sidebar-secondary-item"> |
| <div |
| id="pst-page-navigation-heading-2" |
| class="page-toc tocsection onthispage"> |
| <i class="fa-solid fa-list"></i> On this page |
| </div> |
| <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> |
| <ul class="visible nav section-nav flex-column"> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#controlling-conversion-to-py-arrow-with-the-pycapsule-interface">Controlling conversion to (Py)Arrow with the PyCapsule Interface</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#controlling-conversion-to-pyarrow-array-with-the-arrow-array-protocol">Controlling conversion to <code class="docutils literal notranslate"><span class="pre">pyarrow.Array</span></code> with the <code class="docutils literal notranslate"><span class="pre">__arrow_array__</span></code> protocol</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#defining-extension-types-user-defined-types">Defining extension types (“user-defined types”)</a><ul class="visible nav section-nav flex-column"> |
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#parameterized-extension-type">Parameterized extension type</a></li> |
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#custom-extension-array-class">Custom extension array class</a></li> |
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#custom-scalar-conversion">Custom scalar conversion</a></li> |
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#conversion-to-pandas">Conversion to pandas</a></li> |
| <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#canonical-extension-types">Canonical extension types</a><ul class="nav section-nav flex-column"> |
| <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#fixed-size-tensor">Fixed size tensor</a></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </nav></div> |
| |
| <div class="sidebar-secondary-item"> |
| |
| |
| <div class="tocsection editthispage"> |
| <a href="https://github.com/apache/arrow/edit/main/docs/source/python/extending_types.rst"> |
| <i class="fa-solid fa-pencil"></i> |
| |
| |
| |
| Edit on GitHub |
| |
| |
| </a> |
| </div> |
| </div> |
| |
| </div></div> |
| |
| |
| </div> |
| <footer class="bd-footer-content"> |
| |
| </footer> |
| |
| </main> |
| </div> |
| </div> |
| |
| <!-- Scripts loaded after <body> so the DOM is not blocked --> |
| <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> |
| <script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> |
| |
| <footer class="bd-footer"> |
| <div class="bd-footer__inner bd-page-width"> |
| |
| <div class="footer-items__start"> |
| |
| <div class="footer-item"> |
| |
| <p class="copyright"> |
| |
| © Copyright 2016-2025 Apache Software Foundation. |
| Apache Arrow, Arrow, Apache, the Apache logo, and the Apache Arrow project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. |
| <br/> |
| |
| </p> |
| </div> |
| |
| <div class="footer-item"> |
| |
| <p class="sphinx-version"> |
| Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3. |
| <br/> |
| </p> |
| </div> |
| |
| </div> |
| |
| |
| |
| <div class="footer-items__end"> |
| |
| <div class="footer-item"> |
| <p class="theme-version"> |
| <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> |
| Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. |
| </p></div> |
| |
| </div> |
| |
| </div> |
| |
| </footer> |
| </body> |
| </html> |