В начале тип столбца «b» был bool
, так как все записи были bool
s. Затем вы изменили некоторые записи, поэтому тип был изменен на следующий в строке, который имеет все значения. В этом случае это float
, так как ни bool
, ни int
(из которых bool
не наследует) имеют значение NaN, но float
делает.
Если вы, например, установили df.loc[~df['b'], 'b'] = "False"
, это должно возрастать до тех пор, пока оно не достигнет object
. Все типы наследуют от object
в Python 3, поэтому столбец objects
может содержать любой объект.
Другими словами, все записи в столбце pandas должны быть одного типа. Тип динамически настраивается на ближайший тип, который все объекты в нем разделяют. В вашем случае это float
.
В производственном процессе они оба абсолютно одинаковы - аннотации и / или файлы конфигурации маршрутизации (будь то yaml, xml или php sourced) все скомпилированы в оптимизированное регулярное выражение, которое сопоставляется из пути URL с действием контроллера .
Я склоняюсь в основном к аннотациям о действиях контроллеров (сохраняя конфигурацию близко к действиям, как аннотации phpdoc) и файлам маршрутизации yaml для более общих других маршрутов, таких как перенаправления.
Это полностью ваш выбор относительно того, где они находятся.