---
title: pandas iloc — เลือกข้อมูลด้วยตำแหน่งตัวเลข (integer-position selection)
url: https://www.thepexcel.com/functions/python/selection/pandas-iloc/
type: function-explainer
program: Python
syntax: "df.iloc[row_indexer, col_indexer]"
date: 2026-05-31
scores:
  popularity: 5
  difficulty: 3
  usefulness: 5
---

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

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

## คำอธิบาย

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

## Syntax

```excel
df.iloc[row_indexer, col_indexer]
```

## Arguments

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

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: เลือกแถวแรกออกมา

```excel
df.iloc[0]
```

**ผลลัพธ์:** `name     Alice
score       85
grade        B
Name: 0, dtype: object`

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

### 2. ตัวอย่างที่ 2: slice หลายแถวพร้อมกัน

```excel
df.iloc[0:3]
```

**ผลลัพธ์:** `    name  score grade
0  Alice     85     B
1    Bob     92     A
2  Carol     78     C`

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

### 3. ตัวอย่างที่ 3: เลือกเฉพาะบางคอลัมน์ด้วยตำแหน่ง

```excel
df.iloc[:, 0:2]
```

**ผลลัพธ์:** `    name  score
0  Alice     85
1    Bob     92
2  Carol     78
3   Dave     95`

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

### 4. ตัวอย่างที่ 4: เลือกเซลล์เดียวแบบระบุพิกัดชัดเจน

```excel
df.iloc[1, 1]
```

**ผลลัพธ์:** `92`

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

## หมายเหตุเพิ่มเติม

- 💡 ผมใช้ iloc[-1] บ่อยมากเวลาอยากดูแถวสุดท้ายของข้อมูลครับ ไม่ต้องนับว่ามีกี่แถวก่อน แค่ใส่ -1 ได้แถวสุดท้ายเสมอ ใช้ -2 ก็ได้แถวรองสุดท้ายเช่นกัน

- ถ้า DataFrame ของผมถูก reset_index หรือมี index แปลกๆ (เช่นหลัง filter แล้ว index ไม่ต่อเนื่อง) แนะนำให้ใช้ iloc ดีกว่า loc ครับ เพราะ iloc มองแค่ตำแหน่งจริงๆ ไม่สนใจว่า index label จะเป็นอะไร ป้องกัน KeyError ได้ดี

## คำถามที่พบบ่อย

**Q: iloc กับ loc ต่างกันยังไง?**

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

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

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

**Q: iloc กับ head() ต่างกันยังไง?**

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

## แหล่งข้อมูลเพิ่มเติม

- [pandas DataFrame.iloc (official docs)](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.iloc.html) _(article)_

---

_Source: [https://www.thepexcel.com/functions/python/selection/pandas-iloc/](https://www.thepexcel.com/functions/python/selection/pandas-iloc/)_
