কিভাবে একটি কলাম থেকে পান্ডাস ডেটা ফ্রেম বাছাই


237

আমার কাছে এই জাতীয় ডেটা ফ্রেম রয়েছে:

print(df)

        0          1     2
0   354.7      April   4.0
1    55.4     August   8.0
2   176.5   December  12.0
3    95.5   February   2.0
4    85.6    January   1.0
5     152       July   7.0
6   238.7       June   6.0
7   104.8      March   3.0
8   283.5        May   5.0
9   278.8   November  11.0
10  249.6    October  10.0
11  212.7  September   9.0

আপনি দেখতে পাচ্ছেন, মাসগুলি ক্যালেন্ডারের ক্রমে নেই। সুতরাং আমি প্রতি মাসে (1-12) মাসের সাথে সম্পর্কিত মাসের নম্বর পেতে দ্বিতীয় কলাম তৈরি করেছি। সেখান থেকে, আমি কীভাবে ক্যালেন্ডার মাসের ক্রম অনুসারে এই ডেটা ফ্রেমটিকে বাছাই করতে পারি?

উত্তর:


325

sort_valuesএকটি নির্দিষ্ট কলামের মান দ্বারা df বাছাই করতে ব্যবহার করুন :

In [18]:
df.sort_values('2')

Out[18]:
        0          1     2
4    85.6    January   1.0
3    95.5   February   2.0
7   104.8      March   3.0
0   354.7      April   4.0
8   283.5        May   5.0
6   238.7       June   6.0
5   152.0       July   7.0
1    55.4     August   8.0
11  212.7  September   9.0
10  249.6    October  10.0
9   278.8   November  11.0
2   176.5   December  12.0

আপনি যদি দুটি কলাম sort_valuesঅনুসারে বাছাই করতে চান তবে সারণি অগ্রাধিকার অনুযায়ী কলাম লেবেলগুলি অর্ডার করা কলাম লেবেলের সাথে একটি তালিকা পাস করুন । আপনি যদি ব্যবহার করেন df.sort_values(['2', '0']), ফলাফলটি কলামটি 2পরে কলাম অনুসারে বাছাই করা হবে 0। মঞ্জুর, এই উদাহরণটির জন্য এটি সত্যিকার অর্থে উপলব্ধি করে না কারণ প্রতিটি মানই df['2']স্বতন্ত্র।


75

আমি উপরের সমাধানগুলি চেষ্টা করেছি এবং আমি ফলাফল অর্জন করতে পারি না, তাই আমি একটি আলাদা সমাধান পেয়েছি যা আমার পক্ষে কাজ করে। আরোহী = মিথ্যা মধ্যে dataframe অর্ডার হয় সাজানো , যাতে ডিফল্ট ভাবে এটা কি সত্য । আমি পাইথন 3.6.6 এবং পান্ডাস 0.23.4 সংস্করণ ব্যবহার করছি।

final_df = df.sort_values(by=['2'], ascending=False)

আপনি পান্ডাস ডকুমেন্টেশনে আরও বিশদটি দেখতে পারেন এখানে


9

কেবলমাত্র ডেটাতে আরও কিছু অপারেশন যুক্ত করা হচ্ছে। মনে করুন আমাদের কাছে ডেটাফ্রেম রয়েছে df, আমরা কাঙ্ক্ষিত ফলাফলগুলি পেতে বেশ কয়েকটি অপারেশন করতে পারি

ID         cost      tax    label
1       216590      1600    test      
2       523213      1800    test 
3          250      1500    experiment

(df['label'].value_counts().to_frame().reset_index()).sort_values('label', ascending=False)

sortedএকটি হিসাবে লেবেল আউটপুট দেবেdataframe

    index   label
0   test        2
1   experiment  1

7

অন্য সমাধান হিসাবে:

আপনি আপনার স্ট্রিং ডেটা (মাসের নাম) শ্রেণিবদ্ধ করতে পারেন এবং এটি অনুসারে বাছাই করতে পারেন:

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)

এটি আপনাকে বস্তুটি month nameতৈরি করার সময় নির্দিষ্ট করা অনুসারে অর্ডার করা ডেটা দেবে Categorical

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.