Heim  >  Artikel  >  Backend-Entwicklung  >  Warum zeigt eine Pandas DataFrame-Spalte mit Zeichenfolgen „dtype object“ auch nach der Konvertierung in eine Zeichenfolge an?

Warum zeigt eine Pandas DataFrame-Spalte mit Zeichenfolgen „dtype object“ auch nach der Konvertierung in eine Zeichenfolge an?

DDD
DDDOriginal
2024-10-26 07:24:02550Durchsuche

Why does a Pandas DataFrame column with strings show

Strings in einem DataFrame, aber dtype ist ein Objekt

Einige Benutzer sind auf einen Pandas DataFrame gestoßen, in dem bestimmte Spalten „dtype object“ anzeigen. obwohl jedes Element in diesen Spalten eine Zeichenfolge ist, selbst nach der expliziten Konvertierung in eine Zeichenfolge. Um dieses Verhalten zu verstehen, ist es notwendig, sich mit der Natur der Datentypen in Pandas und NumPy zu befassen.

NumPy, die zugrunde liegende Bibliothek für Pandas, charakterisiert Datentypen als int64, float64 und object. Der D-Typ „Objekt“ bedeutet, dass die Elemente in einem NumPy-Array keine einheitliche, feste Größe in Bytes haben, wie dies bei Ganzzahlen oder Gleitkommazahlen der Fall ist.

Bei Zeichenfolgen variieren ihre Längen, was eine direkte Speicherung erschwert String-Bytes in einem Array unpraktisch. Stattdessen verwendet Pandas ein „Objekt-Array“, das Zeiger auf String-Objekte speichert. Dieser Ansatz erklärt, warum der dtype ein Objekt für Spalten ist, die Zeichenfolgen enthalten.

Betrachten Sie das folgende Beispiel:

import numpy as np
import pandas as pd

# Create a NumPy array of integers
int_array = np.array([1, 2, 3, 4], dtype=np.int64)

# Create a NumPy array of strings
object_array = np.array(['a', 'b', 'c', 'd'], dtype=np.object)

# Convert the object array to pandas DataFrame
df = pd.DataFrame({'INTS': int_array, 'STRINGS': object_array})

# Check the data types
print(df.dtypes)

# Print the lengths of the first item in each column
print(len(df['INTS'].iat[0]))
print(len(df['STRINGS'].iat[0]))

Die Ausgabe lautet:

INTS         int64
STRINGS      object
dtype: object
1
1

Wie Sie können Sehen Sie, die Spalte „INTS“ hat den D-Typ int64, da alle ihre Elemente 8-Byte-Ganzzahlen sind. Die Spalte „STRINGS“ hat den D-Typ „Objekt“, da ihre Elemente Zeiger auf Zeichenfolgenobjekte sind. Die Länge jeder Zeichenfolge ist unterschiedlich, wie aus der Ausgabe hervorgeht.

Das obige ist der detaillierte Inhalt vonWarum zeigt eine Pandas DataFrame-Spalte mit Zeichenfolgen „dtype object“ auch nach der Konvertierung in eine Zeichenfolge an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn