اذهب إلى المحتوى
  • 0

ترتيب العناصر بناء على عمود معين في pandas

Mohamed Elnemr

السؤال

لدي بيانات على الشكل التالي:


     1         2
0    April     4.0
1    August    8.0
2    December  12.0
3    February  2.0
4    January   1.0
5    July      7.0
6    June      6.0
7    March     3.0
8    May       5.0
9    November  11.0
10   October   10.0
11   September 9.0

أريد ترتيبهم بناء على قيم العمود رقم 2 تصاعديا، كيف يمكنني فعل هذا؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

ليكن لدينا المثال التالي:

df
"""
      col1 	col2 	col3 	col4
b 	ali 	33 	Up 	wq
c 	ali 	23 	we 	qw
a 	dac 	23 	we 	we
e 	gsg 	12 	we 	ew
f 	cds 	66 	ew 	ds
g 	sdac 	95 	sdac    dc
i 	cd 	55      adsc 	 r
j 	das 	35 	cda 	 r
k 	ads 	12 	cd 	vc
d 	ad 	88 	cda 	Bhgu
"""

1. فرز صفوف داتافريم بناءً على عمود معين:

df.sort_values(by = 'col1')
"""
col1 	col2 	col3 	col4
d 	ad 	88 	cda 	Bhgu
k 	ads 	12 	cd 	vc
b 	ali 	33 	Up 	wq
c 	ali 	23 	we 	qw
i 	cd 	55 	adsc 	r
f 	cds 	66 	ew 	ds
a 	dac 	23 	we 	we
j 	das 	35 	cda 	r
e 	gsg 	12 	we 	ew
g 	sdac 	95 	sdac 	dc
"""

2. اعتماداً على عدة أعمدة:

df.sort_values(by = ['Name', 'Age'])

3. فرز الصفوف بناءً على عمود معين وترتيب تنازلي:

df.sort_values(by = 'col', ascending = False)

4. لجعل عملية الفرز تتم على البيانات الأصلية نستخدم inplace:

df.sort_values(by = 'Name', inplace = True)

ليكن لدينا مثال آخر:

Arabic 	Math 	Science 	English
Ankit 	75 	50 	60 	70
Rahul 	75 	55 	65 	75
Aishwarya 	75 	35 	45 	25
Shivangi 	75 	90 	60 	70
Priya 	76 	90 	70 	60
Swapnil 	90 	80 	70 	60
Shaurya 	65 	10 	30 	20

1. فرز الأعمدة بناءً على سطر محدد:

df.sort_values(by = 'Priya', axis = 1)
"""
English 	Science 	Arabic 	Math
Ankit 	70 	60 	75 	50
Rahul 	75 	65 	75 	55
Aishwarya 	25 	45 	75 	35
Shivangi 	70 	60 	75 	90
Priya 	60 	70 	76 	90
Swapnil 	60 	70 	90 	80
Shaurya 	20 	30 	65 	10
"""

وأخيراً يمكنك اختيار خوارزمية البحث التي تريدها من خلال الوسيط kind وهذه هي الخيارات المتوفرة:

{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’}, default ‘quicksort’

لاستخدامها:

DataFrame.sort_values(...
					  ...	
					  kind='quicksort'
..
.
.
)

,ولتطبيق عملية ما قبل أن يطبق الفرز يمكن استخدام الوسيط key وتمرير الدالة المناسبة له.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك استخدام الدالة sort_values وذلك لترتيب قيم العناصر سواء تصاعيا أو تنازليا بناء على العمود الذي تريد، الكود التالي يوضح كيفية استخدامها:

In [1]:
df.sort_values(by=['2'], ascending=True)

Out[1]:
     1          2
4    January    1.0
3    February   2.0
7    March      3.0
0    April      4.0
8    May        5.0
6    June       6.0
5    July       7.0
1    August     8.0
11   September  9.0
10   October    10.0
9    November   11.0
2    December   12.0

اذا أردت الترتيب بشكل تنازلي يمكنك جعل ascending=False.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

كحل آخر ، يمكنك تصنيف البيانات النصية والتي هي في حالتك اسم الشهر وفرزها على النحو التالي:

df.rename(columns={1:'month'},inplace=True)
df['month'] = pd.Categorical(df['month'],categories=['December','November','October','September','August','July','June','May','April','March','February','January'],ordered=True)
df = df.sort_values('month',ascending=False)

سيعطيك البيانات المطلوبة حسب اسم الشهر كما حددته أثناء إنشاء الكائن

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...