diff --git a/docs/user-guide/advanced/Pandas_API.ipynb b/docs/user-guide/advanced/Pandas_API.ipynb index 239c4c8..9c9c67b 100644 --- a/docs/user-guide/advanced/Pandas_API.ipynb +++ b/docs/user-guide/advanced/Pandas_API.ipynb @@ -353,6 +353,45 @@ "tab.size" ] }, + { + "cell_type": "markdown", + "id": "4023811f-0f23-4e4b-919c-c055b865d9d2", + "metadata": {}, + "source": [ + "### Table.values\n", + "Return a matricial representation of the DataFrame.\n", + "\n", + "Only the values in the DataFrame will be returned, the axes labels will be removed.\n", + "\n", + "**Returns:**\n", + "\n", + "| Type | Description |\n", + "| :---------------: | :------------------------------------------------------------------- |\n", + "| List | Rows of the table, each as a list. |" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "a7843813-43fc-4920-acd9-6fd2dd50c32e", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'tab' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/tmp/ipykernel_77428/394326152.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtab\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'tab' is not defined" + ] + } + ], + "source": [ + "tab.values" + ] + }, { "cell_type": "markdown", "id": "2be2ece3", @@ -1287,7 +1326,9 @@ { "cell_type": "markdown", "id": "35062560", - "metadata": {}, + "metadata": { + "scrolled": false + }, "source": [ "Remove the `z` and `w` columns from the table and return them." ] @@ -1296,9 +1337,7 @@ "cell_type": "code", "execution_count": null, "id": "a46189b2", - "metadata": { - "scrolled": false - }, + "metadata": {}, "outputs": [], "source": [ "display(tab.head())\n", diff --git a/src/pykx/pandas_api/pandas_meta.py b/src/pykx/pandas_api/pandas_meta.py index 39668d5..3e018d9 100644 --- a/src/pykx/pandas_api/pandas_meta.py +++ b/src/pykx/pandas_api/pandas_meta.py @@ -134,6 +134,11 @@ def shape(self): @property def size(self): return q('{count[x] * count[cols x]}', self) + + @property + def values(self): + tab = self + return q('value peach', tab) @api_return def mean(self, axis: int = 0, numeric_only: bool = False): @@ -257,6 +262,7 @@ def sum(self, axis=0, skipna=True, numeric_only=False, min_count=0): min_count ), cols) + def agg(self, func, axis=0, *args, **kwargs): # noqa: C901 if 'KeyedTable' in str(type(self)): raise NotImplementedError("'agg' method not presently supported for KeyedTable") diff --git a/tests/test_pandas_api.py b/tests/test_pandas_api.py index acfe55f..3ab3025 100644 --- a/tests/test_pandas_api.py +++ b/tests/test_pandas_api.py @@ -2029,3 +2029,13 @@ def test_keyed_loc_fixes(q): mkt[['k1', 'y']] with pytest.raises(KeyError): mkt['k1'] + +def test_values(q): + col1 = q('10?100') + col2 = q('10?`a`b`c`d') + col3 = q('10?`x`y`z`1`2`3') + tab = q('{[price; sym; id] ([]p: price; s: sym; i: id)}', col1, col2, col3) + q_table = tab + pandas_table = tab.pd() + lol = np.array(q_table.values()) + assert pandas_table.values == np.array(q_table.values().py())