如何将数据类型为 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
嘿,我有以下问题,我想在数据类型为 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