我正在用 pykx 替换 embedPy。
我安装了它,它与其他功能配合得很好。
这个不起作用:
\l pykx.q
pd:.pykx.import`pandas;
test: "<table><tr><th>First Name</th><th>Last Name</th><th>Age</th></tr><tr><td>John</td><td>Doe</td><td>30</td></tr><tr><td>Jane</td><td>Smith</td><td>25</td></tr><tr><td>Emily</td><td>Jones</td><td>22</td></tr></table>";
pd[`:read_html][test][@;0];
上面的代码在 embedPy 中工作正常,但在 pykx 中失败。
我得到的错误是:
TypeError("cannot parse from 'numpy.ndarray'")
有什么想法吗?
PyKX 默认将 q CharVector 转换为 Python NumPy 字节数组。
https://code.kx.com/pykx/2.5/pykx-under-q/upgrade.html#function-differences
q).pykx.eval["lambda x: print(type(x))"][test];
<class 'numpy.ndarray'>
q).pykx.eval["lambda x: print(x)"][test];
[b'<' b't' b'a' b'b' b'l' b'e' b'>' b'<' b't' b'r' b'>' b'<' b't' b'h' ...
您可以根据需要创建一个助手来转换为字符串:
q)b2s:.pykx.eval["lambda x: x.tobytes().decode('UTF-8')"]
q).pykx.print pd[`:read_html]b2s[test]
[ First Name Last Name Age
0 John Doe 30
1 Jane Smith 25
2 Emily Jones 22]
有关默认转换的更多信息: https://code.kx.com/pykx/2.5/pykx-under-q/intro.html#function-argument-types