Чтобы точно ответить на вопрос о том, как преобразовать один столбец логических значений в столбец целых чисел 1 или 0:
df.somecolumn = df.somecolumn.astype(int)
Код в вопросе должен делать то, что вы хотите, однако, как писал Дэнни Гудбол в своем комментарии, это очень плохая практика.
Согласно принципу open / close , заявив, что «программные объекты (классы, модули, функции и т. д.) должны быть открыты для расширения, но закрыты для модификации», правильный способ обработки различных действий для разных детей использует переопределить:
Сделать метод виртуальным (может быть еще лучше, как абстрактный метод) и переопределить его в каждом производном классе с его собственной реализацией:
class A
{
virtual void CheckDerived() { throw new NotImplementedException(); }
}
class A0 : A
{
void override CheckDerived() { Console.WriteLine("A0"); }
}
class A1 : A
{
void override CheckDerived() { Console.WriteLine("A1"); }
}
вы должны сделать это, используя типы классов и метод IsAssignableFrom
public class Program
{
public static void Main()
{
A a = new A0();
a.CheckDerived();
}
}
class A0 : A {};
class A1 : A {};
class A2 : A {};
class A {
public void CheckDerived() {
if(this.GetType().IsAssignableFrom(typeof(A0))) Console.Write("A0");
if(this.GetType().IsAssignableFrom(typeof(A1))) Console.Write("A1");
if(this.GetType().IsAssignableFrom(typeof(A2))) Console.Write("A2");
}
}