Итак, насколько я понимаю, вы хотите обновить df1
с df2
только для значений Non-Null
.
Возьмите ниже Dataframes, например:
In [1761]: df1
Out[1761]:
val1 val2 val3
0 NaN NaN 0.20
1 NaN 0.2 NaN
2 NaN NaN 0.13
3 NaN 50.0 0.40
In [1762]: df2
Out[1762]:
val1 val2 val3
0 99 0.10 NaN
1 99 NaN 0.10
2 99 NaN 0.13
3 99 50.00 0.40
Таким образом, в приведенном выше случае произойдут обновления ниже:
1.) Все строки для столбца val1
из df1
будут обновлены на val1
из df2
, поскольку df2
содержит все ненулевые значения для этого столбца.
2.) Только 1-я строка для столбца val2
из df1
будет обновлена на val2
из df2
, так как df2
имеет ненулевое значение для 1-й строки этого столбца.
3.) Только 2-я строка для столбца val3
из df1
будет обновлена на val3
из df2
, так как df2
имеет ненулевое значение для 2-й строки этого столбца.
Примечание: 3-я строка для столбца val2
из df1
не будет обновлена, поскольку имеет значение NULL даже в df2
.
Ниже приведен код для выполнения вышеуказанного:
df1[~df1.notnull()] = df2[df2.notnull()]
Теперь df1
после обновления выглядит так:
In [1766]: df1
Out[1766]:
val1 val2 val3
0 99.0 0.1 0.20
1 99.0 0.2 0.10
2 99.0 NaN 0.13
3 99.0 50.0 0.40
Я думаю, что это решает ваш вопрос.