我将大小为 (30M x 25) 的 Python Pandas
DataFrame
保存为 Apache Arrow 表。然后,我在 Julia 中将该表读为:
input_arrow = Arrow.Table("path/to/table.arrow")
我的问题是如何以有效的方式迭代
input_arrow
的行。
如果我这样做:
for c in input_arrow:
# Do something
然后,我将迭代列,但我需要迭代行。
我尝试过的其他方法是将
Arrow.Table
转换为 DataFrames.DataFrame
:
df = DataFrames.DataFrame(input_arrow)
for row in eachrow(df)
# do something
但是这个方法非常慢。它让我想起在 Python 中执行
df.iterrows()
有多慢。
那么,这是在 Julia 中迭代 Arrow.Table 的快速方法(类似于
df.itertuples()
)?
使用
Tables.rowtable
中的 Tables.jl
将您的 箭头表 转换为 面向行的表,以便您可以对其进行迭代。它非常高效,并且应该比首先转换为 DataFrame 要快得多:
using Arrow, Tables
input_arrow = Arrow.Table("path/to/table.arrow")
row_table = Tables.rowtable(input_arrow)
for row in row_table
# Do something with row
end
此方法会将整个表加载到内存中。如果它太大而无法放入内存,请使用不同的方法,例如processingchunks中的表。