การเพิ่มและลบคอลัมน์
เพิ่มคอลัมน์ที่คำนวณใหม่ เปลี่ยนชื่อคอลัมน์เดิม และลบคอลัมน์หรือแถวที่ไม่ต้องการด้วย drop()
การเพิ่มและลบคอลัมน์ เป็นบทเรียน Pandas & NumPy Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Pandas & NumPy Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน
เพิ่มคอลัมน์ใหม่ด้วยการกำหนดค่า
วิธีที่ง่ายที่สุดในการเพิ่มคอลัมน์คือการกำหนดค่าโดยตรง: df['new_col'] = values ด้านขวามืออาจเป็นค่าสเกลาร์ (กระจายไปยังแถวทั้งหมด), รายการที่มีความยาวเท่ากัน, อาร์เรย์ NumPy, Series ของ Pandas (จัดให้สอดคล้องตามดัชนี) หรือนิพจน์ที่คำนวณจากคอลัมน์ที่มีอยู่ คอลัมน์ใหม่จะถูกเพิ่มทางด้านขวาของ DataFrame
import pandas as pd
df = pd.DataFrame({'price': [10.0, 20.0, 15.0], 'qty': [3, 5, 2]})
df['revenue'] = df['price'] * df['qty']
df['currency'] = 'USD'
print(df)วิศวกรรมคุณลักษณะ: คอลัมน์จากการคำนวณ
การดำเนินการกับ DataFrame ที่พบบ่อยที่สุดอย่างหนึ่งคือการสร้าง คุณลักษณะที่อนุมานขึ้นจากคอลัมน์ที่มีอยู่ คุณสามารถคำนวณผลรวมสะสม อัตราส่วน ธงระบุสถานะ หรือเข้ารหัสค่าประเภทหมวดหมู่ได้ในนิพจน์เวกเตอร์เดียว คอลัมน์จากการคำนวณเหล่านี้จะอัปเดตโดยอัตโนมัติเมื่อคอลัมน์ต้นทางเปลี่ยนแปลง หากคุณคำนวณคอลัมน์เหล่านั้นใหม่ ทำให้กระบวนการวิศวกรรมคุณลักษณะทำซ้ำได้ง่าย
import pandas as pd
df = pd.DataFrame({'salary': [50000, 80000, 60000],
'bonus': [5000, 12000, 7000]})
df['total_comp'] = df['salary'] + df['bonus']
df['bonus_pct'] = (df['bonus'] / df['salary'] * 100).round(1)
print(df)การใช้ assign() สำหรับการเชื่อมเมธอด
df.assign(new_col=expression) ส่งคืน DataFrame ใหม่ ที่มีคอลัมน์เพิ่มเข้ามา โดยไม่แก้ไขต้นฉบับ ต่างจากการกำหนดค่าโดยตรง วิธีนี้เหมาะกับการเชื่อมเมธอดโดยธรรมชาติ คุณสามารถเพิ่มหลายคอลัมน์ได้ในการเรียกครั้งเดียว และนิพจน์ของคอลัมน์ถัดไปสามารถอ้างอิงคอลัมน์ก่อนหน้าที่กำหนดไว้ในการเรียก assign() เดียวกันได้โดยใช้ฟังก์ชันแลมบ์ดา
import pandas as pd
df = pd.DataFrame({'x': [1, 2, 3], 'y': [4, 5, 6]})
result = (df
.assign(sum_xy=lambda d: d['x'] + d['y'])
.assign(ratio=lambda d: d['x'] / d['sum_xy'])
)
print(result)การเปลี่ยนชื่อคอลัมน์ด้วย rename()
df.rename(columns={'old': 'new'}) ส่งคืน DataFrame ใหม่ที่เปลี่ยนชื่อคอลัมน์แล้ว ส่งพจนานุกรมเพื่อเปลี่ยนชื่อเฉพาะคอลัมน์ที่เลือก โดยไม่กระทบคอลัมน์อื่น คุณยังสามารถเปลี่ยนชื่อด้วยฟังก์ชันได้: df.rename(columns=str.upper) จะเปลี่ยนชื่อคอลัมน์ทั้งหมดเป็นตัวพิมพ์ใหญ่ ควรเปลี่ยนชื่อเสมอก่อนรวม DataFrames จากแหล่งข้อมูลต่างกัน เพื่อให้คอลัมน์คีย์สอดคล้องกัน
import pandas as pd
df = pd.DataFrame({'a': [1, 2], 'b': [3, 4], 'c': [5, 6]})
renamed = df.rename(columns={'a': 'alpha', 'b': 'beta'})
print(renamed.columns.tolist()) # ['alpha', 'beta', 'c']
# Rename all columns to uppercase
print(df.rename(columns=str.upper).columns.tolist()) # ['A', 'B', 'C']การทำความสะอาดชื่อคอลัมน์
ชื่อคอลัมน์ในข้อมูลจริงมักมีช่องว่าง อักขระพิเศษ หรือรูปแบบตัวพิมพ์ที่ไม่สม่ำเสมอ ขั้นตอนก่อนประมวลผลที่ใช้กันทั่วไปคือทำให้ชื่อเป็นมาตรฐาน ได้แก่ ตัดช่องว่าง แปลงเป็นตัวพิมพ์เล็ก และแทนที่ช่องว่างด้วยขีดล่าง วิธีนี้ทำให้เข้าถึงคอลัมน์ด้วยรูปแบบจุดได้ และหลีกเลี่ยงปัญหาการใส่เครื่องหมายอัญประกาศในสตริงคำสั่งที่มีลักษณะคล้าย SQL
import pandas as pd
df = pd.DataFrame(columns=['First Name', 'Last Name', 'Email Address'])
df.columns = (df.columns
.str.strip()
.str.lower()
.str.replace(' ', '_', regex=False)
)
print(df.columns.tolist()) # ['first_name', 'last_name', 'email_address']การแทรกคอลัมน์ในตำแหน่งที่กำหนด
df.insert(loc, column, value) แทรกคอลัมน์ที่ตำแหน่งจำนวนเต็ม loc โดยเลื่อนคอลัมน์อื่นไปทางขวา วิธีนี้มีประโยชน์เมื่อคุณต้องการให้คอลัมน์ใหม่อยู่ถัดจากคอลัมน์ที่เกี่ยวข้อง แทนที่จะอยู่ท้ายสุด การดำเนินการนี้แก้ไข DataFrame โดยตรง ต่างจาก assign()
import pandas as pd
df = pd.DataFrame({'name': ['A', 'B'], 'score': [80, 90]})
df.insert(1, 'grade', ['B', 'A'])
print(df)
# name grade score
# 0 A B 80
# 1 B A 90การลบคอลัมน์ด้วย drop()
df.drop(columns=['col1', 'col2']) ส่งคืน DataFrame ใหม่ที่ไม่มีคอลัมน์เหล่านั้น รูปแบบไวยากรณ์แบบเก่า df.drop(['col1', 'col2'], axis=1) ก็ใช้ได้เช่นกัน แต่ทำความเข้าใจได้ยากกว่า หากต้องการลบโดยตรง ให้ส่ง inplace=True ควรเลือกส่งคืน DataFrame ใหม่ในกระบวนการประมวลผลเสมอ เพื่อเก็บต้นฉบับไว้สำหรับเปรียบเทียบหรือย้อนกลับการเปลี่ยนแปลง
import pandas as pd
df = pd.DataFrame({'a': [1,2], 'b': [3,4], 'c': [5,6], 'd': [7,8]})
cleaned = df.drop(columns=['b', 'd'])
print(cleaned.columns.tolist()) # ['a', 'c']การลบแถวด้วย drop()
df.drop(index=['r1', 'r2']) ลบแถวตามป้ายกำกับ df.drop([0, 2]) ลบแถวที่ 0 และ 2 จากดัชนีจำนวนเต็มเริ่มต้น การลบแถวมักใช้เพื่อนำระเบียนที่ทราบว่าไม่ถูกต้อง ค่าผิดปกติ หรือแถวทดสอบออกหลังทำความสะอาดข้อมูล ควรใช้การจัดทำดัชนีแบบบูลีนสำหรับการลบตามเงื่อนไข เพื่อให้โค้ดอ่านได้ง่าย
import pandas as pd
df = pd.DataFrame({'x': [10, 20, 30, 40]}, index=['a', 'b', 'c', 'd'])
trimmed = df.drop(index=['b', 'd'])
print(trimmed)
# x
# a 10
# c 30pop() เพื่อลบและส่งคืนคอลัมน์
df.pop('col') ลบคอลัมน์ออกจาก DataFrame โดยตรง และส่งคืนคอลัมน์นั้นเป็น Series วิธีนี้มีประโยชน์เมื่อคุณต้องการแยกคอลัมน์เป้าหมาย (ป้ายกำกับ) ออกจากเมทริกซ์คุณลักษณะ โดยลบคอลัมน์นั้นออกจาก DataFrame และเก็บแยกไว้เพื่อใช้เป็นตัวแปร y ในแบบจำลอง
import pandas as pd
df = pd.DataFrame({'feature1': [1,2], 'feature2': [3,4], 'target': [0,1]})
y = df.pop('target') # removes column and returns as Series
X = df # remaining features
print(y.tolist()) # [0, 1]
print(X.columns.tolist()) # ['feature1', 'feature2']การจัดลำดับคอลัมน์ใหม่
หากต้องการจัดลำดับคอลัมน์ใหม่ ให้เลือกคอลัมน์ตามลำดับที่ต้องการโดยใช้ df[['col3', 'col1', 'col2']] สำหรับ DataFrame ขนาดใหญ่ที่ต้องการย้ายเพียงไม่กี่คอลัมน์ ให้คำนวณลำดับที่ต้องการด้วยโปรแกรม โดยย้ายคอลัมน์สำคัญมาไว้ด้านหน้า แล้วให้คอลัมน์ที่เหลือตามมา ขั้นตอนนี้มักใช้ในการจัดทำรายงานก่อนส่งออกไปยัง Excel
import pandas as pd
df = pd.DataFrame({'id': [1,2], 'score': [80,90], 'name': ['A','B']})
# Move 'name' and 'id' to front
cols = ['name', 'id'] + [c for c in df.columns if c not in ['name', 'id']]
df = df[cols]
print(df.columns.tolist()) # ['name', 'id', 'score']การอัปเดตค่าคอลัมน์ที่มีอยู่
การอัปเดตค่าทั้งหมดของคอลัมน์ที่มีอยู่ใช้ไวยากรณ์การกำหนดค่าแบบเดียวกับการเพิ่มคอลัมน์ใหม่: df['col'] = new_values ใช้ df.loc[mask, 'col'] = value เพื่ออัปเดตเฉพาะแถวที่ตรงกับเงื่อนไข อย่าใช้การจัดทำดัชนีแบบเชื่อมต่อกันในการอัปเดต แต่ให้ใช้ .loc เสมอ เพื่อหลีกเลี่ยง SettingWithCopyWarning
import pandas as pd
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Carol'], 'score': [45, 80, 92]})
# Set scores below 50 to 50 (floor)
df.loc[df['score'] < 50, 'score'] = 50
print(df['score'].tolist()) # [50, 80, 92]ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับการเพิ่มและลบคอลัมน์จากบทเรียนนี้
สรุปบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า คอลัมน์ใหม่เพิ่มได้ด้วยการกำหนดค่าหรือ assign() ซึ่งเหมาะกับการเชื่อมเมธอด, rename() เปลี่ยนชื่อคอลัมน์โดยไม่แก้ไขข้อมูล และ drop() ลบคอลัมน์หรือแถว และโดยค่าเริ่มต้นจะส่งคืน DataFrame ใหม่ บทถัดไป เราจะใช้ head(), tail(), info() และ describe() เพื่อดูภาพรวมของ DataFrame ใด ๆ ได้อย่างรวดเร็ว
คำถามที่พบบ่อย
บทเรียน “การเพิ่มและลบคอลัมน์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเพิ่มและลบคอลัมน์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Pandas & NumPy Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเพิ่มและลบคอลัมน์”
เพิ่มคอลัมน์ที่คำนวณใหม่ เปลี่ยนชื่อคอลัมน์เดิม และลบคอลัมน์หรือแถวที่ไม่ต้องการด้วย drop() คุณปฏิบัติ Pandas & NumPy Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Pandas & NumPy Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Pandas & NumPy Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การเพิ่มและลบคอลัมน์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Pandas & NumPy Academy นี้ได้ไหม
ได้ บทเรียน Pandas & NumPy Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้าง DataFrames
- การเลือกคอลัมน์และแถว
- การเพิ่มและลบคอลัมน์
- การตรวจสอบ DataFrame เบื้องต้น