我的pandas数据框中有一个列表列,以及int,string等列。我能够转换字符串,日期,整数和时间戳列。我想知道如何将array()应用于列表列。
fields = [
pa.field('id', pa.int64()),
pa.field('secondaryid', pa.int64()),
pa.field('date', pa.timestamp('ms')),
pa.field('emails', pa.array())
]
my_schema = pa.schema(fields)
table = pa.Table.from_pandas(sample_df, schema=my_schema, preserve_index=False)
它要求为该数组传递一个对象。 我想知道如何将字符串类型的数组的架构应用于'emails'列,请记住我将表写成拼花格式,因此,空数组将导致SegFault。最好的方法是什么?
答案 0 :(得分:1)
您需要提供pa.list_(pa.string())
而不是pa.array
。 pa.array
是pyarrow.Array
实例的构造函数。这是保存任何类型数据的主要对象。与此相反,pa.list_()
是LIST类型的构造函数。作为其唯一参数,它必须具有组成列表元素的类型。
用Arrow术语来说, array 是保存类型化数据的最简单的结构。它由许多连续存储器的缓冲区组成。主缓冲区始终是一个位图,指示行是有效还是空。取决于数组的类型。该数据将只有一个缓冲区(例如int),而对于更复杂的类型则有多个缓冲区。相反,术语 list 用于描述数组中存储的数据类型。 LIST表示一列中的单个单元格/行可以容纳多个相同类型的值。