Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah lajur Pandas DataFrame dengan rentetan menunjukkan \'dtype object\' walaupun selepas menukar kepada rentetan?
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!