Thep Excel

pandas ilocเลือกข้อมูลด้วยตำแหน่งตัวเลข (integer-position selection)

iloc ใน pandas ผมใช้สำหรับเลือกแถวและคอลัมน์ด้วยตำแหน่งตัวเลข (0-based index) เหมือนการอ้างอิงเซลล์ใน Excel ด้วยเลขแถว-คอลัมน์ครับ ต่างจาก loc ตรงที่ iloc ไม่สนใจชื่อ index — ดูแค่ว่าอยู่ตำแหน่งที่เท่าไหร่เท่านั้น

>_
df.iloc[row_indexer, col_indexer]

ความนิยม5/10
ความยาก3/10
ประโยชน์5/10

อัปเดต 31 May 2026

Syntax & Arguments

คืนค่าDataFrame

ประเภทผลลัพธ์ขึ้นอยู่กับสิ่งที่เลือกครับ — ถ้าเลือกหลายแถว/คอลัมน์ได้ DataFrame, ถ้าเลือกแถวเดียวหรือคอลัมน์เดียวได้ Series, ถ้าเลือกเซลล์เดียวได้ scalar ค่านั้น ผมใช้ iloc บ่อยในรูปแบบ slice เพื่อตัดส่วนของตารางออกมาทำงานต่อครับ

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
row_indexer int | slice | list[int] | ndarray ตำแหน่งแถวที่ต้องการ เช่น 0 (แถวแรก), -1 (แถวสุดท้าย), 0:3 (แถว 0-2), [0,2,4] (แถวเฉพาะ)
[col_indexer]ไม่บังคับ int | slice | list[int] | ndarray ทุกคอลัมน์ ตำแหน่งคอลัมน์ที่ต้องการ เช่น 1 (คอลัมน์ที่ 2), 0:2 (คอลัมน์แรกสอง), [0,2] (คอลัมน์เฉพาะ) ถ้าไม่ใส่จะได้ทุกคอลัมน์

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

iloc ย่อมาจาก integer location ครับ — มันคือวิธีเข้าถึงข้อมูลใน DataFrame โดยอ้างอิงตำแหน่งแถวและคอลัมน์เป็นตัวเลข เริ่มนับที่ 0 เหมือนภาษา Python ทั่วไป เช่น iloc[0] คือแถวแรก, iloc[-1] คือแถวสุดท้าย

รูปแบบหลักที่ผมใช้บ่อยมี 4 แบบ: iloc[row] เลือกแถวเดียว, iloc[start:stop] slice หลายแถว, iloc[:, col] เลือกคอลัมน์ด้วยตำแหน่ง, และ iloc[row, col] เลือกเซลล์เดียวเป๊ะๆ ครับ

ที่เจ๋งคือ iloc ทำงานได้สม่ำเสมอไม่ว่า index ของ DataFrame จะเป็นเลขเรียงปกติ ตัวเลขสลับ หรือแม้แต่ชื่อเป็น string — มันไม่แคร์ มองแค่ว่า “แถวที่ N” คืออะไร ทำให้ดีบักง่ายมากตอนข้อมูลมี index แปลกๆ ✨

ส่วนตัวผมแนะนำให้จำง่ายๆ ว่า iloc = “ตำแหน่ง” (integer) ส่วน loc = “ชื่อ” (label) ถ้าจะเลือกข้อมูลตาม row number ให้ใช้ iloc ถ้าจะเลือกตามชื่อ index หรือชื่อคอลัมน์ให้ใช้ loc ครับ 😎

Examples

ตัวอย่างที่ 1: เลือกแถวแรกออกมาdf.iloc[0]

ผมใช้ iloc[0] เพื่อดึงแถวแรกออกมาครับ ได้ผลออกมาเป็น Series โดยมี index เป็นชื่อคอลัมน์ เหมือนการอ่านข้อมูลแถวที่ 1 ใน Excel ตรงๆ เลย ถ้าอยากได้แถวสุดท้ายใช้ iloc[-1] ได้เลยครับ

>_
df.iloc[0]

ผลลัพธ์name Alice
score 85
grade B
Name: 0, dtype: object
ตัวอย่างที่ 2: slice หลายแถวพร้อมกันdf.iloc[0:3]

ผมใช้ slice 0:3 เพื่อดึงแถวที่ 0, 1, 2 ออกมาครับ (ไม่รวมแถวที่ 3 — Python นับแบบไม่รวมตัวหลัง) ได้ DataFrame 3 แถวแรกกลับมา เหมือนดูข้อมูล 3 บรรทัดแรกแบบ head(3) เลยครับ

>_
df.iloc[0:3]

ผลลัพธ์ name score grade
0 Alice 85 B
1 Bob 92 A
2 Carol 78 C
ตัวอย่างที่ 3: เลือกเฉพาะบางคอลัมน์ด้วยตำแหน่งdf.iloc[:, 0:2]

ผมใช้ : ในส่วนแถว (แปลว่าทุกแถว) แล้วระบุ 0:2 ในส่วนคอลัมน์เพื่อดึงเฉพาะคอลัมน์ที่ 0 และ 1 (name กับ score) ครับ มีประโยชน์มากตอนเราไม่รู้ชื่อคอลัมน์แน่นอน แต่รู้ว่าต้องการคอลัมน์แรกกี่ตัว

>_
df.iloc[:, 0:2]

ผลลัพธ์ name score
0 Alice 85
1 Bob 92
2 Carol 78
3 Dave 95
ตัวอย่างที่ 4: เลือกเซลล์เดียวแบบระบุพิกัดชัดเจนdf.iloc[1, 1]

ผมระบุ iloc[1, 1] เพื่อดึงค่าจากแถวที่ 1 คอลัมน์ที่ 1 ซึ่งก็คือ score ของ Bob ครับ เหมือนการพิมพ์พิกัดเซลล์ใน Excel เช่น B2 ผลได้เป็นค่าตัวเลขเดียว ไม่ใช่ DataFrame หรือ Series

>_
df.iloc[1, 1]

ผลลัพธ์92

FAQs

iloc กับ loc ต่างกันยังไง?+

ต่างกันที่ว่าใช้อะไรอ้างอิงครับ iloc ใช้ตำแหน่ง (integer position) เสมอ เช่น iloc[0] คือแถวแรกไม่ว่า index ของ DataFrame จะเป็นอะไร ส่วน loc ใช้ label (ชื่อ index หรือชื่อคอลัมน์) เช่น loc['Alice'] หรือ loc[0, 'score'] ผมจำง่ายๆ ว่า iloc = ตำแหน่ง, loc = ชื่อ ครับ

ทำไม iloc[0:3] ได้แค่ 3 แถว ไม่ใช่ 4 แถว?+

เป็นแบบนี้ทั้ง Python ครับ ไม่ใช่แค่ iloc — slice แบบ start:stop ในภาษา Python ไม่รวม stop ตัวท้าย เลยได้แถวที่ 0, 1, 2 ครบ 3 แถว ถ้าอยากได้ 4 แถวให้เขียน iloc[0:4] ครับ เหมือนกฎเดียวกับ list[0:3] ทุกประการ

iloc กับ head() ต่างกันยังไง?+

head(n) ดึงแถวแรก n แถวเสมอครับ ส่วน iloc ยืดหยุ่นกว่า — ดึงแถวกลางๆ ได้ เช่น iloc[5:10] หรือข้ามๆ ได้เช่น iloc[[0,2,4]] head() สั้นกว่าถ้าแค่อยากดู n แถวแรก แต่ iloc ใช้ตอนต้องการควบคุมมากกว่านั้นครับ

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ pandas iloc จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้pandas ilocSelection
Inspection (2)
pandas head

head ใน pandas ผมใช้สำหรับดูข้อมูลแถวแรกๆ ของ DataFrame เพื่อเช็กว่าโหลดข้อมูลมาถูกต้องหรือเปล่า คล้ายกับการ scroll ไปดูบนสุดของตาราง Excel เลยครับ

pandas tail

df.tail(n) ผมใช้สำหรับดึงแถวท้ายสุด n แถวของ DataFrame ออกมาดูเร็วๆ ครับ เหมือนตอนเปิด Excel แล้วกด Ctrl+End เพื่อเลื่อนไปดูข้อมูลแถวล่างสุดของตาราง — มันคือคู่หูของ head ที่ดูแถวบนสุดนั่นเอง

Selection (1)
pandas loc

df.loc ใน pandas ผมใช้สำหรับเลือกข้อมูลจาก DataFrame โดยระบุ label ของแถวและคอลัมน์ ไม่ว่าจะเลือกแถวเดียว หลายแถว หรือกรองด้วยเงื่อนไข Boolean เหมือนการกด Ctrl+F ใน Excel แต่ทรงพลังกว่ามากครับ

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่