วิธีเลือกแถวตามดัชนีใน pandas dataframe
บ่อยครั้งที่คุณอาจต้องการเลือกแถวใน DataFrame ของ pandas ตามค่าดัชนี
หากคุณต้องการเลือกแถวตามการจัดทำดัชนีจำนวนเต็ม คุณสามารถใช้ฟังก์ชัน .iloc ได้
หากคุณต้องการเลือกแถวตามการจัดทำดัชนีฉลาก คุณสามารถใช้ฟังก์ชัน .loc ได้
บทช่วยสอนนี้ให้ตัวอย่างวิธีใช้แต่ละฟังก์ชันเหล่านี้ในทางปฏิบัติ
ตัวอย่างที่ 1: เลือกแถวตามการจัดทำดัชนีจำนวนเต็ม
รหัสต่อไปนี้แสดงวิธีสร้าง DataFrame แพนด้าและใช้ .iloc เพื่อเลือกแถวที่มีค่าดัชนีจำนวนเต็ม 4 :
import pandas as pd import numpy as np #make this example reproducible n.p. random . seeds (0) #createDataFrame df = pd. DataFrame ( np.random.rand (6,2),index=range(0,18,3),columns=[' A ' ,' B ']) #view DataFrame df A B 0 0.548814 0.715189 3 0.602763 0.544883 6 0.423655 0.645894 9 0.437587 0.891773 12 0.963663 0.383442 15 0.791725 0.528895 #select the 5th row of the DataFrame df. iloc [[4]] A B 12 0.963663 0.383442
เราสามารถใช้ไวยากรณ์ที่คล้ายกันเพื่อเลือกหลายแถว:
#select the 3rd, 4th, and 5th rows of the DataFrame
df. iloc [[2, 3, 4]]
A B
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442
หรือเราสามารถเลือกแถวทั้งหมดในช่วง:
#select the 3rd, 4th, and 5th rows of the DataFrame
df. iloc [2:5]
A B
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442
ตัวอย่างที่ 2: เลือกแถวตามการจัดทำดัชนีฉลาก
รหัสต่อไปนี้แสดงวิธีสร้าง DataFrame แพนด้าและใช้ .loc เพื่อเลือกแถวที่มีป้ายกำกับดัชนีเป็น 3 :
import pandas as pd import numpy as np #make this example reproducible n.p. random . seeds (0) #createDataFrame df = pd. DataFrame ( np.random.rand (6,2),index=range(0,18,3),columns=[' A ' ,' B ']) #view DataFrame df A B 0 0.548814 0.715189 3 0.602763 0.544883 6 0.423655 0.645894 9 0.437587 0.891773 12 0.963663 0.383442 15 0.791725 0.528895 #select the row with index label '3' df. loc [[3]] A B 3 0.602763 0.544883
เราสามารถใช้ไวยากรณ์ที่คล้ายกันเพื่อเลือกหลายแถวที่มีป้ายกำกับดัชนีต่างกัน:
#select the rows with index labels '3', '6', and '9'
df. loc [[3, 6, 9]]
A B
3 0.602763 0.544883
6 0.423655 0.645894
9 0.437587 0.891773
ความแตกต่างระหว่าง .iloc และ .loc
ตัวอย่างข้างต้นแสดงให้เห็นถึงความแตกต่างเล็กน้อยระหว่าง .iloc และ .loc :
- .iloc เลือกแถวตาม ดัชนีจำนวนเต็ม ดังนั้น หากคุณต้องการเลือกแถวที่ 5 ของ DataFrame คุณจะต้องใช้ df.iloc[[4]] เนื่องจากแถวแรกอยู่ที่ดัชนี 0 แถวที่สองอยู่ที่ดัชนี 1 และอื่นๆ
- .loc เลือกแถวตาม ดัชนีที่มีป้ายกำกับ ดังนั้น หากคุณต้องการเลือกแถวที่มีป้ายกำกับดัชนีเป็น 5 คุณจะต้องใช้ df.loc[[5]] โดยตรง
แหล่งข้อมูลเพิ่มเติม
วิธีรับหมายเลขแถวใน Pandas DataFrame
วิธีลบแถวที่มีค่า NaN ใน Pandas
วิธีลบคอลัมน์ดัชนีใน Pandas