2014-04-30 17 views
25

के साथ न्यूनतम() का उपयोग करते समय अन्य कॉलम रखें, मैं सभी पंक्तियों को छोड़ने के लिए groupby का उपयोग कर रहा हूं जिसमें न्यूनतम कॉलम नहीं है। इस तरह कुछ:समूह (

df1 = df.groupby("item", as_index=False)["diff"].min() 

हालांकि, अगर मेरे पास उन दो कॉलम से अधिक है, तो अन्य कॉलम गिरा दिए जाते हैं। क्या मैं उन कॉलम को समूहबी का उपयोग करके रख सकता हूं, या क्या मुझे पंक्तियों को छोड़ने के लिए एक अलग तरीका खोजना होगा?

मेरे डेटा की तरह दिखता है:

item diff otherstuff 
    0 1  2   1 
    1 1  1   2 
    2 1  3   7 
    3 2  -1   0 
    4 2  1   3 
    5 2  4   9 
    6 2  -6   2 
    7 3  0   0 
    8 3  2   9 

और तरह खत्म करना चाहिए:

item diff otherstuff 
    0 1  1   2 
    1 2  -6   2 
    2 3  0   0 

लेकिन क्या मैं हो रही है:

item diff 
    0 1  1   
    1 2  -6   
    2 3  0   

मैं के माध्यम से देख रहा है दस्तावेज और कुछ भी नहीं मिला। मैंने कोशिश की:

df1 = df.groupby(["item", "otherstuff"], as_index=false)["diff"].min() 

df1 = df.groupby("item", as_index=false)["diff"].min()["otherstuff"] 

df1 = df.groupby("item", as_index=false)["otherstuff", "diff"].min() 

लेकिन उन में से कोई भी काम (पिछले एक है कि वाक्य रचना एक समूह के बाद एकत्रित करने के लिए है के साथ महसूस किया बनाई गई है)।

उत्तर

50

विधि # 1: idxmin() का उपयोग सूचकांक न्यूनतम diff के तत्वों में से प्राप्त करने के लिए, और उसके बाद का चयन उन:

>>> df.loc[df.groupby("item")["diff"].idxmin()] 
    item diff otherstuff 
1  1  1   2 
6  2 -6   2 
7  3  0   0 

[3 rows x 3 columns] 

विधि # 2: diff द्वारा तरह, और फिर पहला तत्व में ले प्रत्येक item समूह:

>>> df.sort("diff").groupby("item", as_index=False).first() 
    item diff otherstuff 
0  1  1   2 
1  2 -6   2 
2  3  0   0 

[3 rows x 3 columns] 

ध्यान दें कि जिसके परिणामस्वरूप सूचकांक अलग भले ही पंक्ति सामग्री एक ही है कर रहे हैं।

+0

पहले सभी 'NaN' लौटाता है, लेकिन दूसरी विधि काम करती है। धन्यवाद! – PointXIV

+0

ऐसा करने के दो तरीके प्रदान करने के लिए धन्यवाद। मुझे कई उदाहरण मिल गए हैं जो एक काम करता है जब दूसरा और वीज़ा बनाम नहीं होता है। ऐसा लगता है कि यह इस बात पर निर्भर करता है कि आपके तत्व संख्यात्मक हैं या नहीं। दोनों के लिए अच्छा है। – sfortney

+1

.sort_values ​​आजकल ... सही है? –