簡體   English   中英

less_equal 沒有像我預期的那樣工作(pyarrow.compute.less_equal)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM