Строки в 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 без значения None
  • Итерация по нескольким столбцам в Pandas DF и динамическая резка
  • Python, извлекающий новый dataframe
  • Pandas DataFrame: преобразование фрейма с использованием уникальных значений столбца
  • Python: как получить значения из словаря из серии pandas
  • Переопределение индекса в объекте Pandas DataFrame
  • Как подсчитать количество вхождений в любом из двух столбцов
  • Перетаскивание фрейма данных в Pandas (Python)
  • Python - лучший язык программирования в мире.