python Polars -如何添加包含列表作为元素的两个系列

qgelzfjb  于 2023-06-04  发布在  Python
关注(0)|答案(2)|浏览(220)

尝试对两个包含List[i64]数据类型的Series进行加减运算。似乎不支持该操作。

a = pl.Series("a",[[1,2],[2,3]])
b = pl.Series("b",[[4,5],[6,7]])
c = a+b

这给出错误:

PanicException: `add` operation not supported for dtype `list[i64]`

我希望是一个元素求和,就像numpy数组一样:

c = [[5,7],[8,10]]

添加两个列表序列的正确语法是什么?

4szc88ey

4szc88ey1#

您可以执行以下操作:

c = (a.explode() + b.explode()).reshape((2,-1)).alias('c')

shape: (2,)
Series: 'a' [list[i64]]
[
    [5, 7]
    [8, 10]
]

最后的想法:如果你的列表有一个固定的大小,那么你可以考虑使用新的Polars Array数据类型。

jvlzgdj9

jvlzgdj92#

我会像这样遍历一个DataFrame:

(
    pl.DataFrame({'a':a,'b':b})
        .with_row_count('i')
        .explode(['a','b'])
        .groupby('i')
        .agg(c=pl.col('a')+pl.col('b'))
        .get_column('c')
        )

相关问题