machow / siuba

Python library for using dplyr like syntax with pandas and SQL
https://siuba.org
MIT License
1.14k stars 48 forks source link

group_by + mutate + call #479

Closed wangzhichao1990 closed 8 months ago

wangzhichao1990 commented 8 months ago

Hi, I don't understand what went wrong, can you help me? code:

def my_fun(x):
    res = []
    for i in range(0, len(x)):
        taxname = x[i]
        j = i + 1
        res.append(f"WHO_{taxname}_{j}")
    return res

res = data >> group_by(_.taxname) >> mutate(primer=call(my_fun, _.taxname))

error info:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File [~/.local/lib/python3.10/site-packages/pandas/core/indexes/base.py:3653](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/mnt/c/Users/wangzc6/Desktop/%E5%BC%95%E7%89%A9%E8%AE%BE%E8%AE%A1%E8%BF%9B%E5%BA%A6/%E7%94%B2%E5%9E%8B%E6%B5%81%E6%84%9F%E7%97%85%E6%AF%92tNGS%E5%BC%95%E7%89%A9/~/.local/lib/python3.10/site-packages/pandas/core/indexes/base.py:3653), in Index.get_loc(self, key)
   [3652](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/mnt/c/Users/wangzc6/Desktop/%E5%BC%95%E7%89%A9%E8%AE%BE%E8%AE%A1%E8%BF%9B%E5%BA%A6/%E7%94%B2%E5%9E%8B%E6%B5%81%E6%84%9F%E7%97%85%E6%AF%92tNGS%E5%BC%95%E7%89%A9/~/.local/lib/python3.10/site-packages/pandas/core/indexes/base.py:3652) try:
-> [3653](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/mnt/c/Users/wangzc6/Desktop/%E5%BC%95%E7%89%A9%E8%AE%BE%E8%AE%A1%E8%BF%9B%E5%BA%A6/%E7%94%B2%E5%9E%8B%E6%B5%81%E6%84%9F%E7%97%85%E6%AF%92tNGS%E5%BC%95%E7%89%A9/~/.local/lib/python3.10/site-packages/pandas/core/indexes/base.py:3653)     return self._engine.get_loc(casted_key)
   [3654](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/mnt/c/Users/wangzc6/Desktop/%E5%BC%95%E7%89%A9%E8%AE%BE%E8%AE%A1%E8%BF%9B%E5%BA%A6/%E7%94%B2%E5%9E%8B%E6%B5%81%E6%84%9F%E7%97%85%E6%AF%92tNGS%E5%BC%95%E7%89%A9/~/.local/lib/python3.10/site-packages/pandas/core/indexes/base.py:3654) except KeyError as err:

File [~/.local/lib/python3.10/site-packages/pandas/_libs/index.pyx:147](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/mnt/c/Users/wangzc6/Desktop/%E5%BC%95%E7%89%A9%E8%AE%BE%E8%AE%A1%E8%BF%9B%E5%BA%A6/%E7%94%B2%E5%9E%8B%E6%B5%81%E6%84%9F%E7%97%85%E6%AF%92tNGS%E5%BC%95%E7%89%A9/~/.local/lib/python3.10/site-packages/pandas/_libs/index.pyx:147), in pandas._libs.index.IndexEngine.get_loc()

File [~/.local/lib/python3.10/site-packages/pandas/_libs/index.pyx:176](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/mnt/c/Users/wangzc6/Desktop/%E5%BC%95%E7%89%A9%E8%AE%BE%E8%AE%A1%E8%BF%9B%E5%BA%A6/%E7%94%B2%E5%9E%8B%E6%B5%81%E6%84%9F%E7%97%85%E6%AF%92tNGS%E5%BC%95%E7%89%A9/~/.local/lib/python3.10/site-packages/pandas/_libs/index.pyx:176), in pandas._libs.index.IndexEngine.get_loc()

File pandas/_libs/hashtable_class_helper.pxi:2606, in pandas._libs.hashtable.Int64HashTable.get_item()

File pandas/_libs/hashtable_class_helper.pxi:2630, in pandas._libs.hashtable.Int64HashTable.get_item()

KeyError: 0

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[6], [line 10](vscode-notebook-cell:?execution_count=6&line=10)
      [6](vscode-notebook-cell:?execution_count=6&line=6)         res.append(f"WHO_{taxname}_{j}")
      [7](vscode-notebook-cell:?execution_count=6&line=7)     return res
---> [10](vscode-notebook-cell:?execution_count=6&line=10) res = data >> group_by(_.taxname) >> mutate(primer=call(my_fun, _.taxname))
     [11](vscode-notebook-cell:?execution_count=6&line=11) res.head()
...
   [3658](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/mnt/c/Users/wangzc6/Desktop/%E5%BC%95%E7%89%A9%E8%AE%BE%E8%AE%A1%E8%BF%9B%E5%BA%A6/%E7%94%B2%E5%9E%8B%E6%B5%81%E6%84%9F%E7%97%85%E6%AF%92tNGS%E5%BC%95%E7%89%A9/~/.local/lib/python3.10/site-packages/pandas/core/indexes/base.py:3658)     #  InvalidIndexError. Otherwise we fall through and re-raise
   [3659](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/mnt/c/Users/wangzc6/Desktop/%E5%BC%95%E7%89%A9%E8%AE%BE%E8%AE%A1%E8%BF%9B%E5%BA%A6/%E7%94%B2%E5%9E%8B%E6%B5%81%E6%84%9F%E7%97%85%E6%AF%92tNGS%E5%BC%95%E7%89%A9/~/.local/lib/python3.10/site-packages/pandas/core/indexes/base.py:3659)     #  the TypeError.
   [3660](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/mnt/c/Users/wangzc6/Desktop/%E5%BC%95%E7%89%A9%E8%AE%BE%E8%AE%A1%E8%BF%9B%E5%BA%A6/%E7%94%B2%E5%9E%8B%E6%B5%81%E6%84%9F%E7%97%85%E6%AF%92tNGS%E5%BC%95%E7%89%A9/~/.local/lib/python3.10/site-packages/pandas/core/indexes/base.py:3660)     self._check_indexing_error(key)

KeyError: 0