gpt4 book ai didi

pandas - pandas 中的扩展 dtypes 似乎有一个查询错误

转载 作者:行者123 更新时间:2023-12-03 16:51:16 26 4
gpt4 key购买 nike

(2/19/2019):
我在 numexpr 跟踪器中打开了一个报告:
https://github.com/pydata/numexpr/issues/331


Pandas 报告是:
https://github.com/pandas-dev/pandas/issues/25369


除非我在做我不应该做的事
可空 int 的新 dtype 扩展似乎在数据帧上的 QUERY 方法中存在错误(问题似乎出在 numexpr 包中):

df_test = pd.DataFrame(data=[4,5,6], columns=["col_test"])
df_test = df_test.astype(dtype={"col_test": pd.Int32Dtype()})
df_test.query("col_test != 6")

长错误消息的最后几行是:

File "...\site_packages\numexpr\necompiler.py", line 822, in evaluate zip(names, arguments)] File "...\site_packages\numexpr\necompiler.py", line 821, in signature = [(name, getType(arg)) for (name, arg) in File "...\site_packages\numexpr\necompiler.py", line 703, in getType raise ValueError("unknown type %s" % a.dtype.name) ValueError: unknown type object



非扩展 dtypes 工作正常:
df_test = df_test.astype(dtype={"col_test": np.int32})
df_test.query("col_test != 6")

(ps 作为一个完全独立的问题,传递 dtype
直接到 pd.DataFrame 构造函数不起作用 - 似乎有问题)。

谢谢。

最佳答案

扩展 dtypes 已在 0.24 中首次引入,并且有很多问题需要解决。

也就是说,这似乎是 numexpr 和 pandas 之间的某种兼容性问题。这肯定看起来有问题,在修复之前,我们将不得不回到 'python'引擎。

df_test.query('col_test != 6', engine='python')

col_test
0 4
1 5

(有关 query/ eval 的更多信息: Dynamic Expression Evaluation in pandas using pd.eval())

尽管事实上你可以做
df_test.loc[df_test['col_test'] != 6]

col_test
0 4
1 5

这可能要快得多(使用 engine='python'loc 相比没有性能优势)。

关于pandas - pandas 中的扩展 dtypes 似乎有一个查询错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54759936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com