Pandas: วิธีเรียงลำดับ dataframe ตามคอลัมน์สตริง


คุณสามารถใช้วิธีการต่อไปนี้เพื่อจัดเรียงแถวของ Pandas DataFrame ตามค่าของคอลัมน์สตริงเฉพาะ:

วิธีที่ 1: เรียงลำดับตามคอลัมน์สตริง (เมื่อคอลัมน์ประกอบด้วยอักขระเท่านั้น)

 df = df. sort_values (' my_string_column ')

วิธีที่ 2: เรียงลำดับตามคอลัมน์สตริง (เมื่อคอลัมน์ประกอบด้วยอักขระ และ ตัวเลข)

 #create 'sort' column that contains digits from 'my_string_column'
df[' sort '] = df[' my_string_column ']. str . extract (' (\d+) ', expand= False ). astype (int)

#sort rows based on digits in 'sort' column
df = df. sort_values (' sort ')

ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติ

ตัวอย่างที่ 1: จัดเรียงตามคอลัมน์สตริง (เมื่อคอลัมน์ประกอบด้วยอักขระเท่านั้น)

สมมติว่าเรามี DataFrame แพนด้าต่อไปนี้ซึ่งมีข้อมูลเกี่ยวกับการขายผลิตภัณฑ์ต่างๆ ที่ร้านขายของชำ:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' product ': ['Apples', 'Oranges', 'Bananas', 'Lettuce', 'Beans'],
                   ' sales ': [18, 22, 19, 14, 29]})

#view DataFrame
print (df)

   product sales
0 Apples 18
1 Oranges 22
2 Bananas 19
3 Lettuce 14
4 Beans 29

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อเรียงลำดับแถวของ DataFrame ตามสตริงในคอลัมน์ ผลิตภัณฑ์ :

 #sort rows from A to Z based on string in 'product' column
df = df. sort_values (' product ')

#view updated DataFrame
print (df)

   product sales
0 Apples 18
2 Bananas 19
4 Beans 29
3 Lettuce 14
1 Oranges 22

โปรดทราบว่าขณะนี้แถวต่างๆ จะถูกจัดเรียงจาก A ถึง Z ตามสตริงในคอลัมน์ ผลิตภัณฑ์

หากคุณต้องการเรียงลำดับจาก Z ถึง A แทน เพียงเพิ่มอาร์กิวเมนต์ ascending=False :

 #sort rows from Z to A based on string in 'product' column
df = df. sort_values (' product ', ascending= False )

#view updated DataFrame
print (df)

   product sales
1 Oranges 22
3 Lettuce 14
4 Beans 29
2 Bananas 19
0 Apples 18

โปรดทราบว่าขณะนี้แถวต่างๆ จะถูกจัดเรียงจาก Z ถึง A ตามสตริงในคอลัมน์ ผลิตภัณฑ์

ตัวอย่างที่ 2: จัดเรียงตามคอลัมน์สตริง (เมื่อคอลัมน์ประกอบด้วยอักขระ และ ตัวเลข)

สมมติว่าเรามี DataFrame แพนด้าต่อไปนี้ซึ่งมีข้อมูลเกี่ยวกับการขายผลิตภัณฑ์ต่างๆ ที่ร้านขายของชำ:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' product ': ['A3', 'A5', 'A22', 'A50', 'A2', 'A7', 'A9', 'A13'],
                   ' sales ': [18, 22, 19, 14, 14, 11, 20, 28]})

#view DataFrame
print (df)

  product sales
0 A3 18
1 A5 22
2 A22 19
3 A50 14
4 A2 14
5 A7 11
6 A9 20
7 A13 28

โปรดทราบว่าสตริงในคอลัมน์ ผลิตภัณฑ์ มีทั้งอักขระและตัวเลข

หากเราพยายามจัดเรียงแถวของ DataFrame โดยใช้ค่าในคอลัมน์ ผลิตภัณฑ์ สตริงจะไม่ถูกจัดเรียงตามลำดับที่ถูกต้องตามตัวเลข:

 import pandas as pd

#sort rows based on strings in 'product' column
df = df. sort_values (' product ')

#view updated DataFrame
print (df)

  product sales
7 A13 28
4 A2 14
2 A22 19
0 A3 18
1 A5 22
3 A50 14
5 A7 11
6 A9 20

แต่เราต้องสร้างคอลัมน์ชั่วคราวใหม่ที่เรียกว่า sort ซึ่งมีเพียงตัวเลขจากคอลัมน์ผลิตภัณฑ์ จากนั้นเรียงลำดับตามค่าในคอลัมน์ sort แล้วลบคอลัมน์ทั้งหมด:

 import pandas as pd

#create new 'sort' column that contains digits from 'product' column
df[' sort '] = df[' product ']. str . extract (' (\d+) ', expand= False ). astype (int)

#sort rows based on digits in 'sort' column
df = df. sort_values (' sort ')

#drop 'sort' column
df = df. drop (' sort ', axis= 1 )

#view updated DataFrame
print (df)

  product sales
4 A2 14
0 A3 18
1 A5 22
5 A7 11
6 A9 20
7 A13 28
2 A22 19
3 A50 14

โปรดสังเกตว่าขณะนี้แถวต่างๆ ได้รับการจัดเรียงตามสตริงในคอลัมน์ ผลิตภัณฑ์ และตัวเลขจะถูกจัดเรียงตามลำดับที่ถูกต้อง

หมายเหตุ : คุณสามารถดูเอกสารฉบับเต็มของฟังก์ชัน pandas sort_values() ได้ที่นี่

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

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ในแพนด้า:

นุ่น: วิธีจัดเรียงตามวันที่
Pandas: วิธีจัดเรียงคอลัมน์ตามชื่อ
Pandas: วิธีจัดเรียงตามทั้งดัชนีและคอลัมน์

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *