Polars печатает измененные значения между двумя кадрами данныхPython

Программы на Python
Ответить
Anonymous
 Polars печатает измененные значения между двумя кадрами данных

Сообщение Anonymous »

Учитывая два полярных фрейма данных одинаковой формы, я хотел бы напечатать количество значений, различающихся между ними, включая пропущенные значения, которые не отсутствуют в другом фрейме данных.
Я придумал следующее:

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

def print_changes(df1, df2):
assert df1.shape == df2.shape, "DataFrames must have the same shape"
a = (df1 != df2).fill_null(False).to_numpy()
b = (df1.with_columns(pl.all().is_null()) != df2.with_columns(pl.all().is_null())).to_numpy()
n_changes = (a | b).sum().sum()
return n_changes
что, кажется, работает:

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

import polars as pl

df1 = pl.DataFrame({
"name": ["José", "George", "George"],
"age": [28.2, float("nan"), None]
})

df2 = df1.fill_null(0)
print_changes(df1, df2) # prints 1

df2 = df1.fill_nan(0)
print_changes(df1, df2) # prints 1

df2 = df1.with_columns(pl.col("name").replace("George", "Mark"))
print_changes(df1, df2) # prints 2
Однако мне интересно, есть ли лучший способ?
Особенно мне не нравится преобразование в массивы numpy, но поляры, похоже, не поддерживают сравнение между логическими кадрами данных одного и того же размера.>

Подробнее здесь: https://stackoverflow.com/questions/798 ... dataframes
Ответить

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

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

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

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

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