pykx 运行 pandas.read_html() 时失败

问题描述 投票:0回答:1

我正在用 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'")

有什么想法吗?

kdb pykx
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.