الباندا: كيفية فرز dataframe بناءً على عمود السلسلة


يمكنك استخدام الطرق التالية لفرز صفوف Pandas DataFrame بناءً على قيم عمود سلسلة معين:

الطريقة الأولى: الفرز حسب عمود السلسلة (عندما يحتوي العمود على أحرف فقط)

 df = df. sort_values (' my_string_column ')

الطريقة الثانية: الفرز حسب عمود السلسلة (عندما يحتوي العمود على أحرف وأرقام )

 #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

بدلًا من ذلك، نحتاج إلى إنشاء عمود مؤقت جديد يسمى فرز يحتوي فقط على الأرقام من عمود المنتج، ثم الفرز حسب القيم الموجودة في عمود الفرز ، ثم حذف العمود بالكامل:

 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

لاحظ أنه يتم الآن فرز الصفوف حسب السلاسل الموجودة في عمود المنتج ويتم فرز الأرقام بالترتيب الصحيح.

ملاحظة : يمكنك العثور على الوثائق الكاملة لوظيفة Pandassort_values() هنا .

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في الباندا:

الباندا: كيفية الفرز حسب التاريخ
الباندا: كيفية فرز الأعمدة حسب الاسم
الباندا: كيفية الفرز حسب كل من الفهرس والعمود

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *