如何将数据类型为 List[null] 的列转换为 polars 中的 List[i64]

How to cast a column with data type List[null] to List[i64] in polars

嘿,我有以下问题,我想在数据类型为 List 的列上使用 polars apply 函数。 在大多数情况下,这是可行的,但在某些情况下,列中的所有列表都是空的,并且列数据类型是 List[null],在这种特殊情况下,代码会崩溃。

这里有一些示例代码:

df = pl.from_pandas(pd.DataFrame(data=[
    [[]],
    [[]]
], columns=['A']))
df.with_columns(pl.col('A').apply(lambda x:x))

结果

pyo3_runtime.PanicException: Unwrapped panic from Python code

我认为通过将数据类型转换为另一个 List 数据类型可以轻松解决问题,但我不知道该怎么做。

polars>=0.13.11中您可以:

df = pl.from_pandas(pd.DataFrame(data=[
    [[]],
    [[]]
], columns=['A']))


assert df["A"].cast(pl.List(pl.Int64)).dtype.inner == pl.Int64
assert df["A"].cast(pl.List(int)).dtype.inner == pl.Int64