পান্ডাস idxmax
ফাংশনটি ব্যবহার করুন । এটি সোজা:
>>> import pandas
>>> import numpy as np
>>> df = pandas.DataFrame(np.random.randn(5,3),columns=['A','B','C'])
>>> df
A B C
0 1.232853 -1.979459 -0.573626
1 0.140767 0.394940 1.068890
2 0.742023 1.343977 -0.579745
3 2.125299 -0.649328 -0.211692
4 -0.187253 1.908618 -1.862934
>>> df['A'].argmax()
3
>>> df['B'].argmax()
4
>>> df['C'].argmax()
1
বিকল্প হিসাবে আপনি এটি ব্যবহার করতে পারেন numpy.argmax
যেমন numpy.argmax(df['A'])
- এটি একই জিনিস সরবরাহ করে এবং কমপক্ষে idxmax
পর্যবেক্ষণে কমপক্ষে দ্রুত উপস্থিত হয় ।
idxmax()
সূচকগুলির লেবেলগুলি প্রদান করে, পূর্ণসংখ্যা নয়।
- উদাহরণ ': যদি আপনার সূচক লেবেলের মতো স্ট্রিং মান থাকে তবে সারিগুলি' এ 'মাধ্যমে' ই 'এর মতো হয়, আপনি জানতে চাইতে পারেন যে সর্বাধিক সারি 4-এ হয় (সারি' ডি 'নয়)।
- যদি আপনি সেই লেবেলের পূর্ণসংখ্যা অবস্থানটি নিজের
Index
হাতে পেতে চান তবে এটি নিজেই পেতে হবে (যা এখন মুশকিল হতে পারে যে সদৃশ সারি লেবেলগুলির অনুমতি রয়েছে)।
NOTতিহাসিক নোট:
idxmax()
0.11 এর আগে ডাকা হতargmax()
argmax
০.০.০ এর পূর্বে অবচয় করা হয়েছিল এবং পুরোপুরি 1.0.0.0 এ সরানো হয়েছিল
- পান্ডা 0.16 হিসাবে ফিরে,
argmax
একই ফাংশনটি উপস্থিত থাকত এবং সম্পাদন করত (যদিও এটি আরও ধীরে ধীরে চলতে দেখা গিয়েছিল idxmax
)।
argmax
ফাংশন সর্বাধিক উপাদানের সারি অবস্থানের সূচকের মধ্যে পূর্ণসংখ্যার অবস্থানটি প্রদান করে।
- পাণ্ডাস পূর্ণসংখ্যার সূচকগুলির পরিবর্তে সারি লেবেলগুলি ব্যবহার করতে সরানো হয়েছে। অবস্থানগত পূর্ণসংখ্যা সূচকগুলি খুব সাধারণ ব্যবহৃত হত, লেবেলের চেয়ে বেশি সাধারণ, বিশেষত এমন অ্যাপ্লিকেশনগুলিতে যেখানে সদৃশ সারি লেবেলগুলি সাধারণ।
উদাহরণস্বরূপ, DataFrame
সদৃশ সারি লেবেল সহ এই খেলনাটি বিবেচনা করুন :
In [19]: dfrm
Out[19]:
A B C
a 0.143693 0.653810 0.586007
b 0.623582 0.312903 0.919076
c 0.165438 0.889809 0.000967
d 0.308245 0.787776 0.571195
e 0.870068 0.935626 0.606911
f 0.037602 0.855193 0.728495
g 0.605366 0.338105 0.696460
h 0.000000 0.090814 0.963927
i 0.688343 0.188468 0.352213
i 0.879000 0.105039 0.900260
In [20]: dfrm['A'].idxmax()
Out[20]: 'i'
In [21]: dfrm.iloc[dfrm['A'].idxmax()] # .ix instead of .iloc in older versions of pandas
Out[21]:
A B C
i 0.688343 0.188468 0.352213
i 0.879000 0.105039 0.900260
সুতরাং এখানে একটি নিরীহ ব্যবহার idxmax
যথেষ্ট নয়, যেখানে পুরানো ফর্মটি argmax
সঠিকভাবে সর্বাধিক সারিটির অবস্থানগত অবস্থান সরবরাহ করবে (এই ক্ষেত্রে, অবস্থান 9)।
এটি হ'ল ডাইনামিকালি টাইপ করা ভাষাগুলিতে এমন দুষ্টু ধরণের বাগ-প্রবণ আচরণগুলির মধ্যে একটি যা এই ধরণের জিনিসটিকে এত দুর্ভাগ্যজনক করে তোলে এবং একটি মৃত ঘোড়াটিকে মারধর করার উপযুক্ত। আপনি যদি সিস্টেম কোড লিখতে থাকেন এবং আপনার সিস্টেমটি হঠাৎ এমন কিছু ডেটা সেটগুলিতে ব্যবহার হয়ে যায় যা যোগদানের আগে সঠিকভাবে পরিষ্কার হয় না তবে ডুপ্লিকেট সারি লেবেলগুলি বিশেষত স্টুড লেবেলগুলির মতো আর্থিক সম্পদের জন্য একটি CUSIP বা SEDOL শনাক্তকারী হিসাবে শেষ করা খুব সহজ। আপনাকে সাহায্য করতে আপনি সহজেই টাইপ সিস্টেমটি ব্যবহার করতে পারবেন না এবং আপনি অপ্রত্যাশিতভাবে হারিয়ে যাওয়া ডেটা না চালিয়ে সূচকে স্বতন্ত্রতা প্রয়োগ করতে সক্ষম হতে পারবেন না।
সুতরাং আপনার ইউনিট পরীক্ষাগুলি সমস্ত কিছু কভার করেছিল এই আশায় আপনি ছেড়ে গেছেন (তারা সম্ভবত কোনও পরীক্ষা করেনি) - অন্যথায় (সম্ভবতঃ) আপনি কেবল এটিকে ধাক্কা মারছেন কিনা তা দেখার অপেক্ষা রেখে গেছেন unit রানটাইম গোমরাহী, যে ক্ষেত্রে আপনি সম্ভবত ডাটাবেসের আপনি ফলাফল outputting হয়েছে, বের করার চেষ্টা ম্যানুয়ালি সমস্যা পুনর্গঠন IPython দেয়ালে বিরুদ্ধে আপনার মাথা মুহূর্তেই থেকে ড্রপ কাজের অনেক ঘন্টা মূল্য যেতে হবে, পরিশেষে figuring আউট এটা যে কারণ idxmax
পারেন শুধুমাত্র সর্বোচ্চ সারিটির লেবেলটি রিপোর্ট করুন এবং তারপরে হতাশ হয়ে উঠছেন যে কোনও মানক ক্রিয়াকলাপ স্বয়ংক্রিয়ভাবে আপনার পক্ষে সর্বোচ্চ সারিটির অবস্থান পায় না , একটি বগি বাস্তবায়ন নিজেই লেখেন, কোড সম্পাদনা করেন এবং প্রার্থনা করেন যে আপনি আবার সমস্যাটির মধ্যে না চলে।