У меня есть фрейм данных, в котором есть столбцы типа списка одинаковой длины. Я хотел бы выполнить скалярное произведение этих двух столбцов без необходимости «расчленять» списки (поскольку это заняло бы много памяти).
Следующий код выдает ошибку:
df = pl.DataFrame({
"b": [[1,2,3], [2,3],[4],[1,2,3],[]],
"c": [[1,1,1], [2,2],[4],[1,5,6],[]]
})
df.with_columns(pl.col('b').list.eval(pl.element().dot(pl.col('b'))).alias('b.c'))
ComputeError: named columns are not allowed in `list.eval`; consider using `element` or `col("")`
Желаемый результат:
df.with_columns(
dot = np.dot(pl.col('b'), pl.col('c')).list.sum()
)
shape: (5, 3)
┌───────────┬───────────┬─────┐
│ b ┆ c ┆ dot │
│ --- ┆ --- ┆ --- │
│ list[i64] ┆ list[i64] ┆ i64 │
╞═══════════╪═══════════╪═════╡
│ [1, 2, 3] ┆ [1, 1, 1] ┆ 6 │
│ [2, 3] ┆ [2, 2] ┆ 10 │
│ [4] ┆ [4] ┆ 16 │
│ [1, 2, 3] ┆ [1, 5, 6] ┆ 29 │
│ [] ┆ [] ┆ 0 │
└───────────┴───────────┴─────┘
Подробнее здесь: https://stackoverflow.com/questions/730 ... -two-lists