การเลือกคอลัมน์และแถว
เลือกคอลัมน์เดียวหรือหลายคอลัมน์ด้วยสัญกรณ์วงเล็บเหลี่ยม และดึงแถวตามป้ายกำกับและตำแหน่งด้วย .loc และ .iloc
การเลือกคอลัมน์และแถว เป็นบทเรียน Pandas & NumPy Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Pandas & NumPy Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน
เลือกคอลัมน์เดียว
เข้าถึงคอลัมน์เดียวตามชื่อโดยใช้สัญกรณ์วงเล็บ df['col'] ซึ่งคืนค่าเป็น Series คุณยังสามารถใช้สัญกรณ์จุด df.col ได้เมื่อชื่อคอลัมน์เป็นตัวระบุที่ถูกต้องของ Python และไม่มีช่องว่าง สัญกรณ์วงเล็บปลอดภัยเสมอ ส่วนสัญกรณ์จุดจะใช้ไม่ได้กับชื่อที่ซ้ำกับเมธอดของ DataFrame เช่น count หรือ mean
import pandas as pd
df = pd.DataFrame({'name': ['Alice', 'Bob'], 'score': [90, 75]})
print(df['name']) # Series
print(type(df['name'])) # pandas.core.series.Seriesเลือกหลายคอลัมน์
หากต้องการเลือกหลายคอลัมน์ ให้ส่ง รายการชื่อคอลัมน์ ไว้ภายในวงเล็บ: df[['col1', 'col2']] สังเกตวงเล็บซ้อนกันสองชั้น โดยวงเล็บชั้นนอกเป็นตัวดำเนินการสร้างดัชนี ส่วนวงเล็บชั้นในใช้สร้างรายการ Python ผลลัพธ์คือ DataFrame ไม่ใช่ Series วิธีนี้มักใช้เพื่อดึงเมทริกซ์คุณลักษณะสำหรับการเรียนรู้ของเครื่อง
import pandas as pd
df = pd.DataFrame({'a': [1,2], 'b': [3,4], 'c': [5,6]})
subset = df[['a', 'c']]
print(type(subset)) # pandas.core.frame.DataFrame
print(subset).loc สำหรับเลือกแถวและคอลัมน์
df.loc[row_label, col_label] ใช้เลือกข้อมูลตาม ป้ายกำกับ คุณสามารถระบุป้ายกำกับเดียว รายการป้ายกำกับ หรือส่วนข้อมูลสำหรับทั้งแถวและคอลัมน์ได้ df.loc[:, 'score'] เลือกทุกแถวของคอลัมน์ 'score' ส่วน df.loc['r1':'r3', ['a', 'b']] เลือกแถว r1 ถึง r3 (รวม r3) สำหรับคอลัมน์ a และ b
import pandas as pd
df = pd.DataFrame({'x': [10,20,30], 'y': [40,50,60]},
index=['r1', 'r2', 'r3'])
print(df.loc['r2', 'x']) # 20
print(df.loc['r1':'r2', 'y']) # r1:40 r2:50.iloc สำหรับเลือกตามตำแหน่ง
df.iloc[row_pos, col_pos] ใช้เลือกตาม ตำแหน่งจำนวนเต็ม โดยไม่สนใจป้ายกำกับ อาร์กิวเมนต์ทั้งสองเป็นไปตามรูปแบบส่วนข้อมูลของ Python ซึ่งไม่รวมตำแหน่งปลายทาง df.iloc[:, 0] เลือกคอลัมน์แรกเป็น Series ส่วน df.iloc[0:2, 1:3] เลือก DataFrame ย่อยรูปสี่เหลี่ยมขนาด 2×2 จากมุมซ้ายบน
import pandas as pd
df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6], 'c': [7,8,9]})
print(df.iloc[1, 2]) # 8 -- row 1, col 2
print(df.iloc[0:2, 0:2]) # top-left 2x2 sub-tableเลือกแถวด้วยบูลีน
ส่ง boolean Series (ที่มีดัชนีเดียวกับ DataFrame) ให้กับ .loc เพื่อกรองแถว สร้าง boolean Series จากเงื่อนไขของคอลัมน์ คุณสามารถรวมเงื่อนไขด้วย & และ | นี่คือรูปแบบมาตรฐานสำหรับการกรองในการวิเคราะห์ข้อมูลด้วย Pandas และสื่อเงื่อนไขที่ซับซ้อนซึ่งใช้หลายคอลัมน์ได้มากกว่าประโยค WHERE ของ SQL
import pandas as pd
df = pd.DataFrame({'name': ['A','B','C','D'], 'score': [80,55,92,71]})
high = df.loc[df['score'] >= 70]
print(high)
# name score
# 0 A 80
# 2 C 92
# 3 D 71เงื่อนไขการกรองแบบผสม
แต่ละเงื่อนไขต้องอยู่ภายในวงเล็บและรวมกันด้วย & (AND) หรือ | (OR) การใช้คีย์เวิร์ด and/or ของ Python กับ Series จะทำให้เกิดข้อผิดพลาด หากต้องการกลับค่าของเงื่อนไข ให้ใช้ ~ (ตัวหนอน) แทน not ควรทดสอบแต่ละเงื่อนไขแยกกันก่อนรวม เพื่อระบุสาเหตุของผลลัพธ์ที่ไม่คาดคิด
import pandas as pd
df = pd.DataFrame({'name': ['A','B','C','D'],
'score': [80, 55, 92, 71],
'dept': ['Eng', 'HR', 'Eng', 'HR']})
filtered = df.loc[(df['score'] >= 70) & (df['dept'] == 'Eng')]
print(filtered)เลือกแถวตามตำแหน่งจำนวนเต็ม
df.iloc[n] คืนค่าแถวที่ n เป็น Series df.iloc[n:m] คืนค่าแถวตั้งแต่ n ถึง m-1 เป็น DataFrame ส่วน df.iloc[[0, 2, 4]] เลือกแถวเฉพาะตามตำแหน่งโดยใช้การสร้างดัชนีแบบพิเศษ วิธีเหล่านี้เทียบเท่ากับการเลือกแถวของอาร์เรย์ NumPy และมักใช้แบ่งข้อมูลฝึก/ทดสอบก่อนใช้โมเดลการเรียนรู้ของเครื่อง
import pandas as pd
df = pd.DataFrame({'a': range(5), 'b': range(5, 10)})
print(df.iloc[0]) # first row as Series
print(df.iloc[1:3]) # rows 1 and 2 as DataFrame
print(df.iloc[[0, 4]]) # first and last rowรวมการเลือกแถวและคอลัมน์
ทั้ง .loc และ .iloc รับอาร์กิวเมนต์สองรายการ: df.loc[row_selector, col_selector] จึงสามารถเลือกข้อมูลรูปสี่เหลี่ยมที่ต้องการได้อย่างแม่นยำด้วยนิพจน์เดียว การใช้โคลอน : เพียงตัวเดียวหมายถึงเลือกทุกแถวหรือทุกคอลัมน์ รูปแบบนี้จำเป็นสำหรับดึงเมทริกซ์คุณลักษณะที่มีคอลัมน์เฉพาะจากแถวฝึกของชุดข้อมูลเท่านั้น
import pandas as pd
df = pd.DataFrame({'x': [1,2,3], 'y': [4,5,6], 'z': [7,8,9]})
# Filter rows where x > 1, keep columns y and z
result = df.loc[df['x'] > 1, ['y', 'z']]
print(result)
# y z
# 1 5 8
# 2 6 9เลือกแถวเดียวด้วย .loc
เมื่อส่งป้ายกำกับสเกลาร์เดียวให้กับ df.loc[label] ผลลัพธ์จะเป็น Series ที่มีชื่อคอลัมน์เป็นดัชนี วิธีนี้เหมาะสำหรับตรวจสอบระเบียนใดระเบียนหนึ่ง หากต้องการ DataFrame ที่มีแถวเดียวแทน ให้ครอบป้ายกำกับด้วยรายการ: df.loc[[label]] ความแตกต่างนี้สำคัญเมื่อส่งผลลัพธ์ให้ฟังก์ชันที่ต้องการ DataFrame
import pandas as pd
df = pd.DataFrame({'name': ['A','B'], 'score': [80, 90]},
index=['r1', 'r2'])
print(type(df.loc['r1'])) # Series
print(type(df.loc[['r1']])) # DataFrameat และ iat สำหรับเข้าถึงค่าสเกลาร์อย่างรวดเร็ว
df.at[row_label, col_name] และ df.iat[row_pos, col_pos] ใช้ดึงหรือกำหนดค่าสเกลาร์เดียว โดยมีค่าใช้จ่ายในการทำงานต่ำกว่า .loc/.iloc ทั้งสองแบบออกแบบมาสำหรับลูปที่อัปเดตเซลล์ทีละรายการ โดยทั่วไปควรใช้การดำเนินการแบบเวกเตอร์แทนการอัปเดตทีละเซลล์ในโค้ดใช้งานจริง แต่ให้ใช้ at/iat เมื่อจำเป็นต้องวนซ้ำจริง ๆ
import pandas as pd
df = pd.DataFrame({'x': [1, 2, 3], 'y': [4, 5, 6]},
index=['a', 'b', 'c'])
print(df.at['b', 'y']) # 5
print(df.iat[2, 0]) # 3คำเตือนการสร้างดัชนีต่อเนื่อง
การสร้างดัชนีต่อเนื่อง เช่น df['col'][condition] หรือ df[mask]['col'] = val อาจทำให้เกิด SettingWithCopyWarning เพราะ Pandas อาจทำงานกับสำเนาแทนที่จะเป็นข้อมูลต้นฉบับ ควรใช้นิพจน์ .loc เดียวสำหรับการแก้ไขทุกครั้ง: df.loc[mask, 'col'] = val นี่คือรูปแบบที่ถูกต้องและไม่ก่อให้เกิดคำเตือน
import pandas as pd
df = pd.DataFrame({'score': [80, 55, 92]})
# WRONG - may not modify original:
# df[df['score'] > 60]['score'] = 100
# CORRECT:
df.loc[df['score'] > 60, 'score'] = 100
print(df)ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจเกี่ยวกับการเลือกคอลัมน์และแถวจากบทเรียนนี้
ทบทวนบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า .loc เลือกแถวและคอลัมน์ตามป้ายกำกับ โดยรวมตำแหน่งปลายของส่วนข้อมูล .iloc เลือกตามตำแหน่งจำนวนเต็ม โดยไม่รวมตำแหน่งปลายเช่นเดียวกับส่วนข้อมูลของ Python และ เงื่อนไขบูลีนที่ใช้ผ่าน .loc สามารถกรองแถวได้โดยไม่พบปัญหา SettingWithCopyWarning จากการสร้างดัชนีต่อเนื่อง บทถัดไปเราจะเพิ่มคอลัมน์ที่คำนวณขึ้นใหม่ เปลี่ยนชื่อคอลัมน์เดิม และนำคอลัมน์ที่ไม่ต้องการออกด้วย drop()
เรียนรู้ Python ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “การเลือกคอลัมน์และแถว” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเลือกคอลัมน์และแถว” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Pandas & NumPy Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเลือกคอลัมน์และแถว”
เลือกคอลัมน์เดียวหรือหลายคอลัมน์ด้วยสัญกรณ์วงเล็บเหลี่ยม และดึงแถวตามป้ายกำกับและตำแหน่งด้วย .loc และ .iloc คุณปฏิบัติ Pandas & NumPy Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Pandas & NumPy Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Pandas & NumPy Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การเลือกคอลัมน์และแถว” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Pandas & NumPy Academy นี้ได้ไหม
ได้ บทเรียน Pandas & NumPy Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้าง DataFrames
- การเลือกคอลัมน์และแถว
- การเพิ่มและลบคอลัมน์
- การตรวจสอบ DataFrame เบื้องต้น