Для работы get_dummies данные должны быть преобразованы в категориальные типы.Если серия передается, преобразование происходит автоматически.Как указано в документации и в coldspeed, при передаче DataFrame все dtypes объекта или категории (серии этих типов данных) преобразуются в категориальные и приводят к фиктивным столбцам.Например:
pandas.get_dummies(pandas.DataFrame(list("abcdabcd")))
0_a 0_b 0_c 0_d
0 1 0 0 0
1 0 1 0 0
2 0 0 1 0
3 0 0 0 1
4 1 0 0 0
5 0 1 0 0
6 0 0 1 0
7 0 0 0 1
Это работает, потому что список строк становится столбцом строк, которые являются объектами.
Возможно, немного неинтуитивно, ваш столбец целочисленного типа не имеет типа "объект""и, следовательно, не преобразуется в категориальные, поэтому фиктивные столбцы не возвращаются, а возвращается исходный DataFrame.Числовые типы в пандах отличаются от объектов.Вы можете обойти это, просто передав df [["quality"]]. Astype ("category"), так как это приведет к преобразованию целочисленного столбца в категориальный, который затем будет возвращать фиктивные столбцы.
EDIT:Чтобы немного расширить, нужно помнить, что фиктивные переменные являются конструкцией для регрессии (или расширения регрессии).Если Dataframe содержит dtypes как числовые, так и объекты, чаще всего числовые типы предназначены для непосредственного использования в качестве входных данных для модели.Однако типы объектов не имеют значения в регрессии, если не преобразованы в фиктивные переменные.Таким образом, если кто-то передаст get_dummies объект DataFrame с тремя числовыми типами и одним типом объекта, один тип объекта будет преобразован в фиктивную переменную. Это поведение по умолчанию, только если параметр columns не указан .Параметр columns существует в случае, если поведение по умолчанию не соответствует вашим потребностям, например, вы не хотите, чтобы все столбцы объекта / категориальные dtype были преобразованы, или вы хотите преобразовать столбец числового dtype.