Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

เปลี่ยนประเภทข้อมูลสำหรับหนึ่งคอลัมน์ขึ้นไปใน Pandas Dataframe


หลายครั้งที่เราอาจจำเป็นต้องแปลงประเภทข้อมูลของคอลัมน์ตั้งแต่หนึ่งคอลัมน์ขึ้นไปใน data frame ของ pandas เพื่อรองรับความต้องการในการคำนวณบางอย่าง มีฟังก์ชันหรือวิธีการที่สร้างขึ้นในแพนด้าซึ่งสามารถทำได้

การใช้ astype()

astype() วิธีการที่เรากำหนดชนิดข้อมูลใหม่ให้กับคอลัมน์ที่มีอยู่หรือทุกคอลัมน์ของกรอบข้อมูลแพนด้า ในตัวอย่างด้านล่าง เราจะแปลงคอลัมน์ที่มีอยู่ทั้งหมดเป็นประเภทข้อมูลสตริง

ตัวอย่าง

import pandas as pd
#Sample dataframe
df = pd.DataFrame({
   'DayNo': [1, 2, 3, 4, 5,6,7],
   'Name': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu','Fri','Sat'],
   'Qty': [2.6, 5, 11.8, 2, 5.6,0,0.25]})
# Exisitng Data types
print(df.dtypes)
#Convert to string data type
df_str = df.astype(str)
# Verify the conversion
print("***After Conversion***")
print(df_str.dtypes)

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

DayNo       int64
Name       object
Qty     float64
dtype: object
***After Conversion***
DayNo    object
Name     object
Qty     object
dtype: object

การใช้ to_numeric()

เราสามารถแปลงตัวเลขที่ปัจจุบันทำเครื่องหมายเป็นสตริงใน data frame เป็นตัวเลขโดยใช้ to_numeric()

ตัวอย่าง

import pandas as pd
# Example dataframe
df = pd.DataFrame({
   'DayNo': [1, 2, 3, 4, 5,6,7],
   'Name': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu','Fri','Sat'],
   'Qty': [2.6, 5, 11.8, 2, 5.6,0,0.25]})
df_str = df.astype(str)
print(df_str.dtypes)
#Applying conversion
print("After Conversion:")
df_num = pd.to_numeric(df_str.DayNo)
print('DayNo:',df_num.dtypes)

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

ผลลัพธ์

DayNo object
Name object
Qty object
dtype: object
After Conversion:
DayNo: int64

การใช้ infer_objects()

เป็นวิธีการแปลงแบบซอฟต์ที่เราแปลงคอลัมน์ของ DataFrame ที่มีประเภทข้อมูลอ็อบเจ็กต์เป็นประเภทที่เฉพาะเจาะจงมากขึ้น

ตัวอย่าง

import pandas as pd
# Example dataframe
df = pd.DataFrame({
   'DayNo': [1, 2, 3, 4, 5,6,7],
# 'Name': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu','Fri','Sat'],
   'Qty': ['2.6', '5', '11.8', '2', '5.6','0','0.25']}, dtype='object')
print(df.dtypes)
#Applying conversion
print("After Conversion:")
df_new = df.infer_objects()
print(df_new.dtypes)

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

ผลลัพธ์

DayNo    object
Qty      object
dtype:   object
After Conversion:
DayNo   int64
Qty    object
dtype: object