2015-11-21 17 views
5

Dire che ho il seguente dataframe:funzione su coppie di righe esibiscono in Pandas dataframe

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

Voglio creare un elenco di valori per le righe adiacenti nel dataframe. Se creo un indice di coppie posso ottenere quel risultato utilizzando groupby:

>>> 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] 

Qual è il modo più efficace di fare questo?

+0

Il modo più efficace per "Voglio creare un elenco di valori per le righe adiacenti nel dataframe." è no. Mantienilo come il df e fai tutto ciò che devi fare. Vedi anche [XY-problem] (http://meta.stackexchange.com/q/66377/184179). –

+0

Quindi il problema è che sto creando elenchi nel mio dataframe o che sto applicando una funzione alle righe adiacenti? Ho appena usato la funzione di lista arbitrariamente in questo esempio e sono più interessato in generale a come applicare una funzione alle righe adiacenti. – AJG519

+0

Puoi scrivere la tua funzione che accetta un subdataframe nel gruppo ... quale funzione vuoi applicare? O è la domanda su come groupby adiacenza? –

risposta

4

È possibile GroupBy da "adiacenze" in una sola volta (senza mutare la dataframe):

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

e poi fare tutto ciò che è che devi fare:

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 
Problemi correlati