เมธอด iloc[] ใช้เข้าถึงข้อมูลด้วย **ตำแหน่งจำนวนเต็ม (integer position)** สามารถใช้แทรก/แก้ไขแถวที่ตำแหน่งเฉพาะได้ แต่ ไม่ใช่วิธีมาตรฐานในการเพิ่มแถวใหม่** (ควรใช้ pd.concat หรือ loc แทน)
ขั้นตอนการทำงาน
1. สร้าง DataFrame ข้อมูลทีม
import pandas as pd
Team = [
['India', 1, 100],
['Australia', 2, 85],
['England', 3, 75],
['New Zealand', 4, 65],
['South Africa', 5, 50],
['Bangladesh', 6, 40]
]
dataFrame = pd.DataFrame(Team, columns=['Country', 'Rank', 'Points'])
2. แทนที่แถว index 5 (แถวที่ 6) ด้วยข้อมูลใหม่
myList = ["Sri Lanka", 7, 30]
dataFrame.iloc[5] = myList # แทนที่แถวที่ position 5 (index 5)
โค้ดตัวอย่างสมบูรณ์
import pandas as pd
Team = [
['India', 1, 100],
['Australia', 2, 85],
['England', 3, 75],
['New Zealand', 4, 65],
['South Africa', 5, 50],
['Bangladesh', 6, 40]
]
dataFrame = pd.DataFrame(Team, columns=['Country', 'Rank', 'Points'])
print("DataFrame:\n", dataFrame)
# แถวใหม่
myList = ["Sri Lanka", 7, 30]
# แทนที่แถว index 5 (Bangladesh)
dataFrame.iloc[5] = myList
print("\nUpdated DataFrame (replaced row 5):\n", dataFrame)
ผลลัพธ์
DataFrame:
Country Rank Points
0 India 1 100
1 Australia 2 85
2 England 3 75
3 New Zealand 4 65
4 South Africa 5 50
5 Bangladesh 6 40
Updated DataFrame (replaced row 5):
Country Rank Points
0 India 1 100
1 Australia 2 85
2 England 3 75
3 New Zealand 4 65
4 South Africa 5 50
5 Sri Lanka 7 30
⚠️ ข้อสำคัญ: iloc ไม่ใช่สำหรับ "Append"
iloc[5]= **แทนที่** แถวที่มีอยู่ (position 5) ไม่ใช่เพิ่มแถวใหม่- ถ้า index 5 ไม่อยู่ (DataFrame มีแค่ 5 แถว index 0-4) → จะเกิด
IndexError - ไม่สามารถ
iloc[len(df)] = new_rowได้ (ไม่ขยาย DataFrame)
วิธีเพิ่มแถวใหม่ที่ถูกต้อง
# 1. pd.concat (แนะนำสำหรับหลายแถว)
new_row = pd.DataFrame([["Sri Lanka", 7, 30]], columns=df.columns)
df = pd.concat([df, new_row], ignore_index=True)
# 2. loc กับ index ใหม่ (สำหรับแถวเดียว)
df.loc[len(df)] = ["Sri Lanka", 7, 30] # ใช้ได้เพราะ len(df) = index ใหม่
# 3. append (deprecated)
# df = df.append({"Country": "Sri Lanka", "Rank": 7, "Points": 30}, ignore_index=True)
การใช้งาน iloc ที่ถูกต้อง
| รูปแบบ | คำอธิบาย |
|---|---|
df.iloc[row_index] | เข้าถึงแถว (Series) |
df.iloc[row_index, col_index] | เข้าถึงเซลล์เดียว |
df.iloc[row_slice, col_slice] | Slice แถวและคอลัมน์ |
df.iloc[list_of_indices] | เลือกหลายแถวพร้อมกัน |
df.iloc[:, col_list] | เลือกคอลัมน์ตามตำแหน่ง |
สรุป
ilocใช้สำหรับ **อ่าน/เขียน ตำแหน่งที่มีอยู่แล้ว**- ใช้
loc[len(df)]หรือpd.concatสำหรับ **เพิ่มแถวใหม่** - ใช้
df.at[]/df.iat[]สำหรับเข้าถึงเซลล์เดี่ยว (เร็วกว่า)