Когда вы используете df.replace()
, он создает новый временный объект, но не изменяет ваш. Вы можете использовать одну из двух следующих строк для изменения df:
df = df.replace('white', np.nan)
df.replace('white', np.nan, inplace = True)
Это работает, потому что производный класс может переопределить частную виртуальную функцию базового класса, даже если функция базового класса переопределяет свою функцию базового класса.
Это совершенно законно:
class Parent
{
public:
int foo() {return bar();} // the non-virtual public interface
private
virtual int bar();
};
class Child : public Parent
{
private:
virtual int bar(); // overrides Parent::bar()
};
class Grandchild : public Child
{
private:
virtual int bar(); // overrides Child::bar();
};
Производный класс может решить для себя:
Можно просто переопределить метод полностью путем реализации виртуальной функции. Можно увеличить метод путем вызывания 'средней' функции классов в какой-то момент в методе производного класса.
Если это не то, что Вы хотите, необходимо настроить его явно в 'среднем' классе. Я не был бы все же. Если Вы требуете этого, это, вероятно, означает, что Вы не дали базовому классу достаточно точек настройки.