Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah lajur Pandas DataFrame dengan rentetan menunjukkan \"dtype object\" walaupun selepas menukar kepada rentetan?

Mengapakah lajur Pandas DataFrame dengan rentetan menunjukkan \"dtype object\" walaupun selepas menukar kepada rentetan?

DDD
DDDasal
2024-10-26 07:24:02550semak imbas

Why does a Pandas DataFrame column with strings show

String dalam DataFrame, tetapi dtype ialah objek

Sesetengah pengguna telah menemui Pandas DataFrame di mana lajur tertentu memaparkan "objek dtype," walaupun setiap item dalam lajur tersebut ialah rentetan, walaupun selepas penukaran eksplisit kepada rentetan. Untuk memahami gelagat ini, anda perlu menyelidiki sifat jenis data dalam Pandas dan NumPy.

NumPy, pustaka asas untuk Pandas, mencirikan jenis data sebagai int64, float64 dan objek. Dtype "objek" menandakan bahawa unsur-unsur dalam tatasusunan NumPy tidak seragam, saiz tetap dalam bait, seperti halnya untuk integer atau terapung.

Untuk rentetan, panjangnya berbeza-beza, menjadikan penyimpanan langsung bait rentetan dalam tatasusunan tidak praktikal. Sebaliknya, Pandas menggunakan "tatasusunan objek" yang menyimpan penunjuk kepada objek rentetan. Pendekatan ini menerangkan sebab dtype ialah objek untuk lajur yang mengandungi rentetan.

Pertimbangkan contoh berikut:

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]))

Outputnya ialah:

INTS         int64
STRINGS      object
dtype: object
1
1

Seperti yang anda boleh lihat, lajur "INTS" mempunyai dtype int64, kerana semua elemennya ialah integer 8-bait. Lajur "STRINGS" mempunyai djenis objek kerana elemennya adalah penunjuk kepada objek rentetan. Panjang setiap rentetan adalah berbeza, seperti yang dibuktikan oleh output.

Atas ialah kandungan terperinci Mengapakah lajur Pandas DataFrame dengan rentetan menunjukkan \"dtype object\" walaupun selepas menukar kepada rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn