Строки в DataFrame, но dtype – объект

Почему Пандас говорит мне, что у меня есть объекты, хотя каждый элемент в выбранном столбце является строкой – даже после явного преобразования.

Это мой DataFrame:

<class 'pandas.core.frame.DataFrame'> Int64Index: 56992 entries, 0 to 56991 Data columns (total 7 columns): id 56992 non-null values attr1 56992 non-null values attr2 56992 non-null values attr3 56992 non-null values attr4 56992 non-null values attr5 56992 non-null values attr6 56992 non-null values dtypes: int64(2), object(5) 

Пять из них – dtype object . Я явно конвертирую эти объекты в строки:

 for c in df.columns: if df[c].dtype == object: print "convert ", df[c].name, " to string" df[c] = df[c].astype(str) 

Тогда df["attr2"] все еще имеет dtype object , хотя type(df["attr2"].ix[0] показывает str , что является правильным.

Pandas различает int64 и float64 и object . Какова его логика, когда нет dtype str ? Почему str покрывается object ?

One Solution collect form web for “Строки в DataFrame, но dtype – объект”

Объект dtype поступает из NumPy, он описывает тип элемента в ndarray. Каждый элемент в ndarray должен иметь одинаковый размер в байте. Для int64 и float64 они равны 8 байтам. Но для строк длина строки не фиксирована. Поэтому вместо сохранения байтов строк в ndarray напрямую, Pandas использует объект ndarray, который сохраняет указатели на объекты, из-за этого dtype этого типа ndarray является объектом.

Вот пример:

  • массив int64 содержит 4 значения int64.
  • массив объектов содержит 4 указателя на 3 строковых объекта.

введите описание изображения здесь

  • Pandas DataFrame Group по двум столбцам и подсчету
  • Преобразование столбца со строками, разделяемыми значениями в строки
  • Pandas: проверка того, является ли дата праздником и назначает логическое значение
  • Объединение Dataframes, которое было получено через веб-скребок
  • Создание отчетов с помощью Python: PDF или HTML в PDF
  • Может ли pandas обрабатывать пробелы переменной длины как разделители столбцов
  • Получение min и max Дата из кадра данных pandas
  • Как выбрать строки, которые содержат определенное значение, по крайней мере, в одном из элементов в строке?
  • Python - лучший язык программирования в мире.