जवाबों:
मान लिया गया है df
कि एक अद्वितीय सूचकांक है, इससे अधिकतम मान के साथ पंक्ति मिलती है:
In [34]: df.loc[df['Value'].idxmax()]
Out[34]:
Country US
Place Kansas
Value 894
Name: 7
ध्यान दें कि idxmax
इंडेक्स लेबल लौटाता है । इसलिए यदि DataFrame इंडेक्स में डुप्लिकेट है, तो लेबल विशिष्ट रूप से पंक्ति की पहचान नहीं कर सकता है, इसलिए df.loc
एक से अधिक पंक्ति वापस कर सकता है।
इसलिए, यदि आपके df
पास कोई अनन्य अनुक्रमणिका नहीं है, तो आपको उपरोक्त के रूप में आगे बढ़ने से पहले अनुक्रमणिका को विशिष्ट बनाना होगा। DataFrame के आधार पर, कभी-कभी आप इंडेक्स को विशिष्ट बनाने के लिए उपयोग stack
या उपयोग कर सकते हैं set_index
। या, आप बस अनुक्रमणिका को रीसेट कर सकते हैं (ताकि पंक्तियाँ फिर से शुरू हो जाएं, 0 से शुरू हो):
df = df.reset_index()
df[df['Value']==df['Value'].max()]
यह अधिकतम मान के साथ पूरी पंक्ति लौटाएगा
देश और स्थान श्रृंखला का सूचकांक है, अगर आपको सूचकांक की आवश्यकता नहीं है, तो आप सेट कर सकते हैं as_index=False
:
df.groupby(['country','place'], as_index=False)['value'].max()
संपादित करें:
ऐसा लगता है कि आप हर देश के लिए अधिकतम मूल्य वाला स्थान चाहते हैं, निम्नलिखित कोड वही करेगा जो आप चाहते हैं:
df.groupby("country").apply(lambda df:df.irow(df.value.argmax()))
मुझे लगता है कि अधिकतम मूल्य के साथ एक पंक्ति को वापस करने का सबसे आसान तरीका इसका सूचकांक है। argmax()
सबसे बड़े मूल्य के साथ पंक्ति के सूचकांक को वापस करने के लिए इस्तेमाल किया जा सकता है।
index = df.Value.argmax()
अब उस विशेष पंक्ति के लिए सुविधाओं को प्राप्त करने के लिए सूचकांक का उपयोग किया जा सकता है:
df.iloc[df.Value.argmax(), 0:2]
की 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
अधिकतम मूल्य के साथ देश और स्थान को मुद्रित करने के लिए, कोड की निम्नलिखित पंक्ति का उपयोग करें।
print(df[['Country', 'Place']][df.Value == df.Value.max()])
स्तंभों में अधिकतम मान खोजने के लिए मेरा समाधान:
df.ix[df.idxmax()]
, न्यूनतम भी:
df.ix[df.idxmin()]
आप उपयोग कर सकते हैं:
प्रिंट (df [df [ 'मान'] == df [ 'मान']। अधिकतम ()])
पंडों का उपयोग करके डेटा आयात करने की कोशिश करते समय मुझे एक समान त्रुटि का सामना करना पड़ा, मेरे डेटासेट के पहले कॉलम में शब्दों की शुरुआत से पहले रिक्त स्थान थे। मैंने रिक्त स्थान हटा दिए और यह एक आकर्षण की तरह काम किया !!