'ডেটাফ্রেম' অবজেক্টের কোনও 'অ্যাট্রিবিউট' নেই


101

আমি এখানে কিছু সমস্যার মুখোমুখি হই, আমার পাইথন প্যাকেজে আমি নম্পি ইনস্টল করেছি, তবে আমার এখনও এই ত্রুটিটি রয়েছে 'ডেটাফ্রেম' অবজেক্টটির কোনও 'বৈশিষ্ট্য' নেই

যে কেউ আমাকে কিছু ধারণা দিতে পারেন ..

এটি আমার কোড:

final.loc[-1] =['', 'P','Actual']
final.index = final.index + 1  # shifting index
final = final.sort()
final.columns=[final.columns,final.iloc[0]]
final = final.iloc[1:].reset_index(drop=True)
final.columns.names = (None, None)

উত্তর:


220

sort() উভয়ের পক্ষে ডেটা ফ্রেমগুলির জন্য অবহেলা করা হয়েছিল:

  • sort_values()থেকে কলাম অনুসারে বাছাই (গুলি)
  • sort_index()থেকে সূচক এটি অনুসারে বাছাইয়ের

sort()মুক্তি 0.17 (2015-10-09) প্রবর্তনের সঙ্গে পান্ডাস এ অসমর্থিত হয়েছে (কিন্তু এখনও উপলব্ধ) sort_values()এবং sort_index()। এটি প্রকাশের 0.20 (2017-05-05) সহ পান্ডাস থেকে সরানো হয়েছিল।


15

পান্ডাস বাছাই 101

sortv0.20 দ্বারা DataFrame.sort_valuesএবং দ্বারা প্রতিস্থাপিত হয়েছে DataFrame.sort_index। এটি বাদ দিয়ে আমাদেরও আছে argsort

বাছাইয়ের ক্ষেত্রে কয়েকটি সাধারণ ব্যবহারের কেস এবং বর্তমান এপিআইতে বাছাই করা ফাংশনগুলি ব্যবহার করে কীভাবে তাদের সমাধান করবেন। প্রথমে সেটআপ।

# Setup
np.random.seed(0)
df = pd.DataFrame({'A': list('accab'), 'B': np.random.choice(10, 5)})    
df                                                                                                                                        
   A  B
0  a  7
1  c  9
2  c  3
3  a  5
4  b  2

একক কলাম অনুসারে বাছাই করুন

উদাহরণস্বরূপ, dfকলাম "এ" অনুসারে বাছাই করতে , sort_valuesএকক কলামের নাম ব্যবহার করুন:

df.sort_values(by='A')

   A  B
0  a  7
3  a  5
4  b  2
1  c  9
2  c  3

আপনার যদি সতেজ রেঞ্জইন্ডেক্স প্রয়োজন হয় তবে ব্যবহার করুন DataFrame.reset_index

একাধিক কলাম অনুসারে বাছাই করুন

উদাহরণস্বরূপ, উভয় কর্নেল "এ" এবং "বি" অনুসারে বাছাই dfকরতে, আপনি এখানে একটি তালিকা পাস করতে পারেন sort_values:

df.sort_values(by=['A', 'B'])

   A  B
3  a  5
0  a  7
4  b  2
2  c  3
1  c  9

ডেটাফ্রেম সূচক অনুসারে বাছাই করুন

df2 = df.sample(frac=1)
df2

   A  B
1  c  9
0  a  7
2  c  3
3  a  5
4  b  2

আপনি এটি ব্যবহার করে এটি করতে পারেন sort_index:

df2.sort_index()

   A  B
0  a  7
1  c  9
2  c  3
3  a  5
4  b  2

df.equals(df2)                                                                                                                            
# False
df.equals(df2.sort_index())                                                                                                               
# True

এখানে তাদের পারফরম্যান্সের সাথে তুলনামূলক কিছু পদ্ধতি রয়েছে:

%timeit df2.sort_index()                                                                                                                  
%timeit df2.iloc[df2.index.argsort()]                                                                                                     
%timeit df2.reindex(np.sort(df2.index))                                                                                                   

605 µs ± 13.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
610 µs ± 24.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
581 µs ± 7.63 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

সূচকের তালিকা অনুসারে বাছাই করুন

উদাহরণ স্বরূপ,

idx = df2.index.argsort()
idx
# array([0, 7, 2, 3, 9, 4, 5, 6, 8, 1])

এই "বাছাই" সমস্যাটি আসলে একটি সাধারণ সূচিকর্মের সমস্যা। কেবল পূর্ণসংখ্যা লেবেলগুলি পাস করার জন্য iloc

df.iloc[idx]

   A  B
1  c  9
0  a  7
2  c  3
3  a  5
4  b  2
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.