একটি কলামের সর্বাধিক মান সন্ধান করুন এবং পান্ডাস ব্যবহার করে সংশ্লিষ্ট সারি মানগুলি ফিরিয়ে দিন


117

তথ্য কাঠামো;

পাইথন পান্ডাস ব্যবহার করে আমি সর্বোচ্চ মান সহ Country& সন্ধানের চেষ্টা করছি Place

এটি সর্বোচ্চ মান প্রদান করে:

data.groupby(['Country','Place'])['Value'].max()

তবে আমি কীভাবে সম্পর্কিত Countryএবং Placeনাম পাব ?

উত্তর:


170

ধরে dfনেওয়া একটি অনন্য সূচক রয়েছে, এটি সর্বাধিক মান সহ সারি দেয়:

In [34]: df.loc[df['Value'].idxmax()]
Out[34]: 
Country        US
Place      Kansas
Value         894
Name: 7

মনে রাখবেন যে, idxmaxআয় সূচক লেবেল । সুতরাং যদি ডাটাফ্রেমের সূচীতে সদৃশ থাকে তবে লেবেলটি স্বতন্ত্রভাবে সারিটি সনাক্ত করতে পারে না, তাই df.locএকাধিক সারি ফেরত আসতে পারে।

অতএব, যদি dfকোনও অনন্য সূচক না থাকে তবে উপরের দিকে এগিয়ে যাওয়ার আগে আপনাকে অবশ্যই সূচিটিকে অনন্য করে তুলতে হবে। ডেটা ফ্রেমের উপর নির্ভর করে কখনও কখনও আপনি ব্যবহার করতে পারেন stackবা set_indexসূচকটি অনন্য করতে পারেন । অথবা, আপনি কেবল সূচকটি পুনরায় সেট করতে পারেন (সুতরাং সারিগুলি 0 থেকে শুরু হয়ে পুনরায় নামকরণ করা হবে):

df = df.reset_index()

ধন্যবাদ. আমি ঠিক তাই খুঁজছিলাম।
সমৃদ্ধ

56
df[df['Value']==df['Value'].max()]

এটি সর্বোচ্চ মান সহ পুরো সারিটি ফিরিয়ে দেবে


ব্যাখ্যা: - ভেতরের অভিব্যক্তি নেই dataFrame দৈর্ঘ্য & সূচকের যা সন্তুষ্ট অভিব্যক্তি (.max ()) ডান দিকে সূচক, যেটা ঘুরে ফিরে সেই dataFrame সম্পূর্ণ সারি আহ্বান ফেরৎ সর্বত্র একটি বুলিয়ান চেক
পঞ্চ

10

দেশ এবং স্থান হ'ল সিরিজের সূচি, যদি আপনার সূচকের প্রয়োজন না হয় তবে আপনি সেট করতে পারেন as_index=False:

df.groupby(['country','place'], as_index=False)['value'].max()

সম্পাদনা:

দেখে মনে হচ্ছে আপনি প্রতিটি দেশের জন্য সর্বাধিক মান সহ জায়গাটি চান, নিম্নলিখিত কোডটি আপনি যা চান তা করবে:

df.groupby("country").apply(lambda df:df.irow(df.value.argmax()))

যে শুধুমাত্র কলাম নাম এবং dtypes ফিরে আসবে
রিচি

8

আমি মনে করি সর্বাধিক মান সহ সারি ফিরানোর সহজতমতম উপায় হ'ল এর সূচক পাওয়া। argmax()সর্বাধিক মান সহ সূচকটি ফেরত দিতে ব্যবহার করা যেতে পারে।

index = df.Value.argmax()

এখন সূচকটি নির্দিষ্ট সারিটির বৈশিষ্ট্যগুলি পেতে ব্যবহার করা যেতে পারে:

df.iloc[df.Value.argmax(), 0:2]

7

এর indexবৈশিষ্ট্যটি ব্যবহার করুন DataFrame। নোট করুন যে আমি উদাহরণটিতে সমস্ত সারি টাইপ করি না।

In [14]: df = data.groupby(['Country','Place'])['Value'].max()

In [15]: df.index
Out[15]: 
MultiIndex
[Spain  Manchester, UK     London    , US     Mchigan   ,        NewYork   ]

In [16]: df.index[0]
Out[16]: ('Spain', 'Manchester')

In [17]: df.index[1]
Out[17]: ('UK', 'London')

আপনি যে সূচকটি দ্বারা মানটি পেতে পারেন:

In [21]: for index in df.index:
    print index, df[index]
   ....:      
('Spain', 'Manchester') 512
('UK', 'London') 778
('US', 'Mchigan') 854
('US', 'NewYork') 562

সম্পাদন করা

আপনি যা চান তা ভুল বোঝার জন্য দুঃখিত, অনুসরণ অনুসরণ করুন:

In [52]: s=data.max()

In [53]: print '%s, %s, %s' % (s['Country'], s['Place'], s['Value'])
US, NewYork, 854

সঠিক। তবে আমি একটি লাইনের আউটপুট খুঁজছি যা বলছে, 'মার্কিন যুক্তরাষ্ট্র, কানসাস, 894'
ধনী

ধন্যবাদ। এটি বর্তমান ডেটাসেটের জন্য সমস্যার সমাধান করবে যেখানে মান সহ মাত্র 1 কলাম রয়েছে। যখন মানগুলি সহ আরও কলাম থাকবে তখন আনটবু এর সমাধান আরও ভাল কাজ করবে। যাই হোক ধন্যবাদ.
সমৃদ্ধ

5

সর্বাধিক মান সহ দেশ এবং স্থান মুদ্রণ করতে, নিম্নলিখিত কোডের লাইনটি ব্যবহার করুন।

print(df[['Country', 'Place']][df.Value == df.Value.max()])


2

আমি আরও nlargestভাল পারফরম্যান্স এবং সংক্ষিপ্ত কোডের জন্য ব্যবহার করার পরামর্শ দেব । আমদানিpandas

df[col_name].value_counts().nlargest(n=1)

2

তুমি ব্যবহার করতে পার:

মুদ্রণ (df প্রয়োগ [df প্রয়োগ [ 'VALUE'] == df প্রয়োগ [ 'VALUE']। সর্বোচ্চ ()])


2

আমদানি পান্ডাস
ডিএফ আপনার তৈরি করা ডেটা ফ্রেম create

কমান্ডটি ব্যবহার করুন:

df1=df[['Country','Place']][df.Value == df['Value'].max()]

এটি দেশ এবং স্থান প্রদর্শন করবে যার মান সর্বাধিক।


0

পান্ডাস ব্যবহার করে ডেটা আমদানির চেষ্টা করার সময় আমি একই ধরণের ত্রুটির মুখোমুখি হয়েছিলাম, আমার ডেটাসেটের প্রথম কলামে শব্দ শুরুর আগে ফাঁকা জায়গা ছিল। আমি স্পেসগুলি সরিয়েছি এবং এটি একটি কবজির মতো কাজ করেছে !!

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