Anonymous
Разница между двумя кадрами данных Polars
Сообщение
Anonymous » 13 фев 2026, 17:02
Как лучше всего найти различия между двумя кадрами данных Polars?
Метод равенства сообщает мне, что если есть разница, я хочу найти ее.
Пример:
Код: Выделить всё
import polars as pl
df1 = pl.DataFrame([
{'id': 1,'col1': ['a',None],'col2': ['x']},
{'id': 2,'col1': ['b'],'col2': ['y', None]},
{'id': 3,'col1': [None],'col2': ['z']}]
)
┌─────┬─────────────┬─────────────┐
│ id ┆ col1 ┆ col2 │
│ --- ┆ --- ┆ --- │
│ i64 ┆ list[str] ┆ list[str] │
╞═════╪═════════════╪═════════════╡
│ 1 ┆ ["a", null] ┆ ["x"] │
│ 2 ┆ ["b"] ┆ ["y", null] │
│ 3 ┆ [null] ┆ ["z"] │
└─────┴─────────────┴─────────────┘
Код: Выделить всё
df2 = pl.DataFrame([
{'id': 1,'col1': ['a'],'col2': ['x']},
{'id': 2,'col1': ['b', None],'col2': ['y', None]},
{'id': 3,'col1': [None],'col2': ['z']}]
)
┌─────┬─────────────┬─────────────┐
│ id ┆ col1 ┆ col2 │
│ --- ┆ --- ┆ --- │
│ i64 ┆ list[str] ┆ list[str] │
╞═════╪═════════════╪═════════════╡
│ 1 ┆ ["a"] ┆ ["x"] │
│ 2 ┆ ["b", null] ┆ ["y", null] │
│ 3 ┆ [null] ┆ ["z"] │
└─────┴─────────────┴─────────────┘
Разница в примере касается id = 1 и id = 2.
Я могу объединить фреймы данных:
Код: Выделить всё
df1.join(df2, on='id', suffix='_df2')
┌─────┬─────────────┬─────────────┬─────────────┬─────────────┐
│ id ┆ col1 ┆ col2 ┆ col1_df2 ┆ col2_df2 │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ list[str] ┆ list[str] ┆ list[str] ┆ list[str] │
╞═════╪═════════════╪═════════════╪═════════════╪═════════════╡
│ 1 ┆ ["a", null] ┆ ["x"] ┆ ["a"] ┆ ["x"] │
│ 2 ┆ ["b"] ┆ ["y", null] ┆ ["b", null] ┆ ["y", null] │
│ 3 ┆ [null] ┆ ["z"] ┆ [null] ┆ ["z"] │
└─────┴─────────────┴─────────────┴─────────────┴─────────────┘
Ожидаемый результат
Я хотел бы:
добавить логические столбцы, которые будут показывать True в строках с разницей
фильтровать и отображать только строки с разницей.
В примере только 2 столбца, но в кадре данных больше столбцов.>
Подробнее здесь:
https://stackoverflow.com/questions/754 ... dataframes
1770991341
Anonymous
Как лучше всего найти различия между двумя кадрами данных Polars? Метод равенства сообщает мне, что если есть разница, я хочу найти ее. Пример: [code]import polars as pl df1 = pl.DataFrame([ {'id': 1,'col1': ['a',None],'col2': ['x']}, {'id': 2,'col1': ['b'],'col2': ['y', None]}, {'id': 3,'col1': [None],'col2': ['z']}] ) ┌─────┬─────────────┬─────────────┐ │ id ┆ col1 ┆ col2 │ │ --- ┆ --- ┆ --- │ │ i64 ┆ list[str] ┆ list[str] │ ╞═════╪═════════════╪═════════════╡ │ 1 ┆ ["a", null] ┆ ["x"] │ │ 2 ┆ ["b"] ┆ ["y", null] │ │ 3 ┆ [null] ┆ ["z"] │ └─────┴─────────────┴─────────────┘ [/code] [code]df2 = pl.DataFrame([ {'id': 1,'col1': ['a'],'col2': ['x']}, {'id': 2,'col1': ['b', None],'col2': ['y', None]}, {'id': 3,'col1': [None],'col2': ['z']}] ) ┌─────┬─────────────┬─────────────┐ │ id ┆ col1 ┆ col2 │ │ --- ┆ --- ┆ --- │ │ i64 ┆ list[str] ┆ list[str] │ ╞═════╪═════════════╪═════════════╡ │ 1 ┆ ["a"] ┆ ["x"] │ │ 2 ┆ ["b", null] ┆ ["y", null] │ │ 3 ┆ [null] ┆ ["z"] │ └─────┴─────────────┴─────────────┘ [/code] Разница в примере касается id = 1 и id = 2. Я могу объединить фреймы данных: [code]df1.join(df2, on='id', suffix='_df2') ┌─────┬─────────────┬─────────────┬─────────────┬─────────────┐ │ id ┆ col1 ┆ col2 ┆ col1_df2 ┆ col2_df2 │ │ --- ┆ --- ┆ --- ┆ --- ┆ --- │ │ i64 ┆ list[str] ┆ list[str] ┆ list[str] ┆ list[str] │ ╞═════╪═════════════╪═════════════╪═════════════╪═════════════╡ │ 1 ┆ ["a", null] ┆ ["x"] ┆ ["a"] ┆ ["x"] │ │ 2 ┆ ["b"] ┆ ["y", null] ┆ ["b", null] ┆ ["y", null] │ │ 3 ┆ [null] ┆ ["z"] ┆ [null] ┆ ["z"] │ └─────┴─────────────┴─────────────┴─────────────┴─────────────┘ [/code] [b]Ожидаемый результат[/b] Я хотел бы: [list] [*]добавить логические столбцы, которые будут показывать True в строках с разницей [*]фильтровать и отображать только строки с разницей. [/list] В примере только 2 столбца, но в кадре данных больше столбцов.> Подробнее здесь: [url]https://stackoverflow.com/questions/75476288/difference-between-2-polars-dataframes[/url]