{"id":23299,"library":"awkward-pandas","title":"Awkward Array Pandas Extension","description":"Awkward-pandas integrates Awkward Arrays with pandas, allowing columnar data with variable-length lists, nested structures, and missing values to be used in DataFrames. Version 2023.8.0 supports Python >=3.8. Provides storage extension and accessor for seamless conversion. Low maintenance; release cadence is sporadic.","status":"active","version":"2023.8.0","language":"python","source_language":"en","source_url":"https://github.com/intake/awkward-pandas","tags":["awkward","pandas","arrays","variable-length","nested","extension"],"install":[{"cmd":"pip install awkward-pandas","lang":"bash","label":"pip install"}],"dependencies":[{"reason":"core dependency for Awkward Array operations","package":"awkward","optional":false},{"reason":"DataFrame integration","package":"pandas","optional":false},{"reason":"optional for Arrow conversion","package":"pyarrow","optional":true}],"imports":[{"note":"","wrong":"","symbol":"AwkwardExtensionArray","correct":"from awkward_pandas import AwkwardExtensionArray"},{"note":"","wrong":"","symbol":"AwkwardAccessor","correct":"from awkward_pandas import AwkwardAccessor"}],"quickstart":{"code":"import awkward as ak\nimport pandas as pd\nfrom awkward_pandas import AwkwardExtensionArray\n\n# Create an Awkward Array\narray = ak.Array([[1, 2], [3], None])\n\n# Create a DataFrame with AwkwardExtensionArray column\nser = pd.Series(AwkwardExtensionArray(array), name='col')\ndf = ser.to_frame()\nprint(df)\n\n# Use the accessor for operations\nprint(df['col'].ak.num())","lang":"python","description":"Create a DataFrame with an Awkward Array column and use the .ak accessor."},"warnings":[{"fix":"Upgrade awkward to >=2.0.0: pip install 'awkward>=2.0.0'","message":"Version 2023.8.0 may be incompatible with older versions of awkward (<2.0). Awkward 2.0 introduced breaking changes in its API (e.g., `ak.Array` construction). Ensure awkward >=2.0 is installed.","severity":"breaking","affected_versions":">=2023.8.0"},{"fix":"Ensure the argument is an `ak.Array` object: `AwkwardExtensionArray(ak.Array([1, 2, 3]))`","message":"The `AwkwardExtensionArray` constructor expects an Awkward Array, not a list or numpy array. Passing a plain Python list will raise a TypeError.","severity":"gotcha","affected_versions":"all"},{"fix":"Convert to Awkward Array and use native awkward operations instead of accessor for critical code.","message":"The `.ak` accessor methods are not fully aligned with pandas 2.0+ API. Some operations (e.g., `.ak.num()`) may return unexpected types in newer pandas versions. Prefer explicit conversion to numpy/awkward before aggregations.","severity":"deprecated","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Wrap in ak.Array: AwkwardExtensionArray(ak.Array(your_list))","cause":"Passing a Python list to AwkwardExtensionArray constructor instead of an ak.Array.","error":"TypeError: Cannot interpret 'list' as an Awkward Array"},{"fix":"Run 'pip install awkward-pandas' in your Python environment.","cause":"Package not installed or installed in wrong environment.","error":"ModuleNotFoundError: No module named 'awkward_pandas'"},{"fix":"Convert to ak.Array first: AwkwardExtensionArray(ak.Array(np_array))","cause":"Constructor called with incompatible type (e.g., numpy array).","error":"ValueError: The 'data' argument must be an Awkward Array"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}