Сравните список полярностей со списком PythonPython

Программы на Python
Ответить
Anonymous
 Сравните список полярностей со списком Python

Сообщение Anonymous »

Скажем, у меня есть это:

Код: Выделить всё

import polars

df = polars.DataFrame(dict(
j=[1,2,3],
k=[4,5,6],
l=[7,8,9],
))

Код: Выделить всё

shape: (3, 3)
┌─────┬─────┬─────┐
│ j   ┆ k   ┆ l   │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 │
╞═════╪═════╪═════╡
│ 1   ┆ 4   ┆ 7   │
│ 2   ┆ 5   ┆ 8   │
│ 3   ┆ 6   ┆ 9   │
└─────┴─────┴─────┘
Я могу фильтровать определенную строку, выполняя ее по одному столбцу за раз, т.е.:

Код: Выделить всё

df = df.filter(
(polars.col('j') == 2) &
(polars.col('k') == 5) &
(polars.col('l') == 8)
)

Код: Выделить всё

shape: (1, 3)
┌─────┬─────┬─────┐
│ j   ┆ k   ┆ l   │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 │
╞═════╪═════╪═════╡
│ 2   ┆ 5   ┆ 8   │
└─────┴─────┴─────┘
Однако вместо этого я бы хотел сравнить со списком (чтобы избежать перечисления каждого столбца и разместить переменные столбцы DataFrame), например что-то вроде:

Код: Выделить всё

df = df.filter(
polars.concat_list(polars.all()) == [2, 5, 8]
)

# exceptions.ArrowErrorException: NotYetImplemented("Casting from Int64 to LargeList(Field { name: \"item\", data_type: Int64, is_nullable: true, metadata: {} }) not supported")
Есть идеи, почему приведенное выше исключение вызывает исключение?
Я могу создать выражение вручную:

Код: Выделить всё

df = df.filter(
functools.reduce(lambda a, e: a & e, (polars.col(c) == v for c, v in zip(df.columns, [2, 5, 8])))
)
но я надеялся, что есть способ напрямую сравнивать списки - например. как если бы у меня изначально был этот DataFrame:

Код: Выделить всё

df = polars.DataFrame(dict(j=[
[1,4,7],
[2,5,8],
[3,6,9],
]))

Код: Выделить всё

shape: (3, 1)
┌───────────┐
│ j         │
│ ---       │
│ list[i64] │
╞═══════════╡
│ [1, 4, 7] │
│ [2, 5, 8] │
│ [3, 6, 9] │
└───────────┘
и хотел найти строку, соответствующую [2, 5, 8]. Есть подсказки?


Подробнее здесь: https://stackoverflow.com/questions/762 ... ython-list
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»