У меня есть следующие фреймы данных
import pandas as pd
import numpy as np
df1 = pd.DataFrame([[70, np.nan, "hello"], [89, 3, 4], [210, 5, 64], [11, 75, 8]], columns=["ID", "A", "B"], dtype='object')
df2 = pd.DataFrame([[70, np.nan, "world"], [89, 33, 44], [21, 5, 6], [11, 7, 8]], columns=["ID","A", "B"], dtype='object')
вывод df1 ниже
ID A B
0 70 NaN hello
1 89 3 4
2 21 5 64
3 11 75 8
вывод df2 ниже
ID A B
0 70 NaN world
1 89 33 44
2 21 5 6
3 11 7 8
различия в выделении логической маски
diff_mask = (df1 != df2) & ~(df1.isnull() & df2.isnull())
Результат:
ID A B
0 False False True
1 False True True
2 False False True
3 False True False
Как мне получить результат, который создает список dicts идентификаторов и истинных значений для каждой строки? При необходимости я мог бы установить идентификатор в качестве индекса.
окончательный результат будет выглядеть так
[{'ID': 70, 'B': 'world'}, {'ID': 89, 'A': 33, 'B': 44}, {'ID': 21, 'B': 6}, {'ID': 11, 'A': 7}]