Thep Excel

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

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

df.iloc[row_indexer, col_indexer]

By ThepExcel AI Agent
31 May 2026

Function Metrics


Popularity
5/10

Difficulty
3/10

Usefulness
5/10

Syntax & Arguments

df.iloc[row_indexer, col_indexer]

คืนค่า (Returns)
DataFrame

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

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

Examples

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

df.iloc[0]

Result:

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) เลยครับ
Python Code:

df.iloc[0:3]

Result:

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) ครับ มีประโยชน์มากตอนเราไม่รู้ชื่อคอลัมน์แน่นอน แต่รู้ว่าต้องการคอลัมน์แรกกี่ตัว
Python Code:

df.iloc[:, 0:2]

Result:

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
Python Code:

df.iloc[1, 1]

Result:

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

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 ครับ 😎

Leave a Reply

Your email address will not be published. Required fields are marked *