![](/img/trans.png)
[英]What might be the cause of 'invalid value encountered in less_equal' in numpy
[英]less_equal not working like I expect (pyarrow.compute.less_equal)
我正在嘗試調試我在使用 pyarrow 時遇到的這個問題。 請參閱此代碼段:
pa_execution_date = Z['execution_date'][i]
py_execution_date = pa_execution_date.as_py()
pa_report_date = Z['report_date'][i]
py_report_date = pa_report_date.as_py()
print(pa_execution_date)
print(pa_report_date)
print(py_execution_date)
print(py_report_date)
assert (pc.less_equal(pa_execution_date, pa_report_date))
assert (py_execution_date <= py_report_date)
我看到的是第二個斷言失敗但不是第一個(在某些情況下)。 這真的很奇怪,因為兩個比較操作應該是等價的......
這是發生這種情況時打印輸出中的 output:
1591303729000000000
1591303728000000000
1591303729000000000
1591303728000000000
關於我做錯了什么的任何想法?
我原以為第一個斷言會在第二個斷言有機會執行並失敗之前失敗。 我沒想到第二個斷言會在第一個斷言沒有先失敗的情況下失敗。
我發現了問題。 表達式pc.less_equal(pa_execution_date, pa_report_date)
實際上返回一個BooleanScalar
,一個 pyarrow object,而不是一個 python 布爾值。 Adding.as_py() 可以解決問題。
pyarrow.compute.less_equal
返回一個pyarrow.BooleanScaler
object。這不是像 Python 那樣的假值。 您可以這樣做以將其轉換為 Python 值:
assert pc.less_equal(pa_execution_date, pa_report_date).as_py()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.