Есть ли простой способ получить доступ к значению в структуре Polars? ⇐ Python
-
Гость
Есть ли простой способ получить доступ к значению в структуре Polars?
Основное использование value_counts в DataFrame — получение количества определенного значения.
Если у меня есть df, например:
DataFrame({"color": ["красный", "синий", "красный", "зеленый", "синий", "синий"]}) тогда, если мне нужен счетчик цвета = 'красный' в Pandas, я мог бы просто использовать:
df['color'].value_counts()['красный'] что ясно и очевидно.
В Polars функция value_counts() создает DF со столбцом значений структуры:
┌─────────────┐ │ цвет │ │ --- │ │ структура[2] │ ╞═════════════╡ │ {"зеленый",1} │ │ {"синий",3} │ │ {"красный", 2} │ └──────────────┘ который можно разделить на DF с отдельными столбцами, используя
counts = df.select(pl.col("color").value_counts()).unnest('color') а затем необходимое значение можно получить с помощью
counts.select(pl.col('count').filter(pl.col('color') == 'red')).item() аналогично group_by('color').len() можно использовать вместо value_counts
Все это кажется довольно сложным для такого частого требования. Есть ли более простой способ извлечения одного значения счетчика с помощью Polars и, в более общем смысле, для доступа к значениям структуры.
Основное использование value_counts в DataFrame — получение количества определенного значения.
Если у меня есть df, например:
DataFrame({"color": ["красный", "синий", "красный", "зеленый", "синий", "синий"]}) тогда, если мне нужен счетчик цвета = 'красный' в Pandas, я мог бы просто использовать:
df['color'].value_counts()['красный'] что ясно и очевидно.
В Polars функция value_counts() создает DF со столбцом значений структуры:
┌─────────────┐ │ цвет │ │ --- │ │ структура[2] │ ╞═════════════╡ │ {"зеленый",1} │ │ {"синий",3} │ │ {"красный", 2} │ └──────────────┘ который можно разделить на DF с отдельными столбцами, используя
counts = df.select(pl.col("color").value_counts()).unnest('color') а затем необходимое значение можно получить с помощью
counts.select(pl.col('count').filter(pl.col('color') == 'red')).item() аналогично group_by('color').len() можно использовать вместо value_counts
Все это кажется довольно сложным для такого частого требования. Есть ли более простой способ извлечения одного значения счетчика с помощью Polars и, в более общем смысле, для доступа к значениям структуры.