2015-11-21 17 views
5

मैं निम्नलिखित dataframe है कहते हैं:पांडा dataframe में पंक्तियों के जोड़े पर समारोह में प्रदर्शन

>>> df=pd.DataFrame(data=['A','B','C','D','E'], columns=['Name']) 
>>> df 
    Name 
0 A 
1 B 
2 C 
3 D 
4 E 
>>> 

मैं dataframe में सन्निकट पंक्तियों के लिए मानों की सूची बनाना चाहते हैं। यदि मैं जोड़ों का सूचकांक बनाता हूं तो मैं समूहबी का उपयोग करके परिणाम प्राप्त कर सकता हूं:

>>> df.index=[0,0,1,1,2] 
>>> df.groupby(level=0).agg(lambda x: list(x)) 
    Name 
0 [A, B] 
1 [C, D] 
2  [E] 

ऐसा करने का सबसे प्रभावी तरीका क्या है?

+0

लिए सबसे कारगर तरीका करने के लिए:

In [11]: g = df.groupby(df.index // 2) 

और उसके बाद जो कुछ भी यह आपको बस इतना करना है कर "मैं डेटाफ्रेम में आसन्न पंक्तियों के लिए मूल्यों की एक सूची बनाना चाहता हूं।" नहीं है इसे डीएफ के रूप में रखें और जो कुछ भी आपको करने की ज़रूरत है वह करें। यह भी देखें [एक्सवाई-समस्या] (http://meta.stackexchange.com/q/66377/184179)। –

+0

तो क्या यह मुद्दा है कि मैं अपने डेटाफ्रेम में सूचियां बना रहा हूं या मैं आसन्न पंक्तियों में एक फ़ंक्शन लागू कर रहा हूं? मैंने इस उदाहरण में मनमाने ढंग से सूची फ़ंक्शन का उपयोग किया है और आम तौर पर आसन्न पंक्तियों में फ़ंक्शन को लागू करने के तरीके में अधिक दिलचस्पी है। – AJG519

+0

आप अपना खुद का फ़ंक्शन लिख सकते हैं जो समूह में subdataframe स्वीकार करता है ... आप किस फ़ंक्शन को लागू करना चाहते हैं? या सवाल यह है कि आसन्नता को कैसे समूहित किया जाए? –

उत्तर

4

आप (DataFrame परिवर्तनशील) के बिना एक ही बार में "निकटता" द्वारा GroupBy कर सकते हैं:

In [12]: g.get_group(0) 
Out[12]: 
    Name 
0 A 
1 B 

In [13]: g.sum() 
Out[13]: 
    Name 
0 AB 
1 CD 
2 E 
संबंधित मुद्दे